泛型
泛型方法、泛型类
你可以写一个泛型方法,该方法在调用时可以接收不同类型的参数。根据传递给泛型方法的参数类型,编译器适当地处理每一个方法调用。
下面是定义泛型方法的规则:
- 所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前(在下面例子中的)。
- 每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。
- 类型参数能被用来声明返回值类型,并且能作为泛型方法得到的实际参数类型的占位符。
- 泛型方法体的声明和其他方法一样。注意类型参数只能代表引用型类型,不能是原始类型(像int,double,char的等)。
package com.company.generic;
//泛型类
//public class GenericDemo01<T> {
// public void show(T t){
// System.out.println(t);
// }
//}
//泛型方法
public class GenericDemo01 {
public <T> void show(T t){
System.out.println(t);
}
}
package com.company.generic;
public class Test {
public static void main(String[] args) {
//泛型类测试
// GenericDemo01<String> g1 = new GenericDemo01<String>();
// g1.show("adasda");
// GenericDemo01<Integer> g2 = new GenericDemo01<Integer>();
// g2.show(50);
// GenericDemo01<Boolean> g3 = new GenericDemo01<Boolean>();
// g3.show(true);
//泛型方法测试
GenericDemo01 g1 = new GenericDemo01();
g1.show("adasda");
g1.show(50);
g1.show(true);
}
}
泛型接口
package com.company.generic;
//泛型接口
public interface GenericDemo01<T> {
void show(T t);
}
package com.company.generic;
public class GenericDemo01Impl<T> implements GenericDemo01<T> {
@Override
public void show(T t) {
System.out.println(t);
}
}
package com.company.generic;
public class Test {
public static void main(String[] args) {
//泛型接口测试
GenericDemo01Impl<String> g1 = new GenericDemo01Impl<String>();
g1.show("sdfsdfsfd");
GenericDemo01Impl<Integer> g2 = new GenericDemo01Impl<Integer>();
g2.show(566);
GenericDemo01Impl<Boolean> g3 = new GenericDemo01Impl<Boolean>();
g3.show(true);
}
}
可变参数的使用
package com.company.generic;
public class Test02 {
public static void main(String[] args) {
System.out.println(sum(10,20,65,50));
System.out.println(sum(10,20,65,50,56));
System.out.println(sum(10,20,65,50,48,45));
}
public static int sum(int... a){
int sum = 0;
for (int i : a) {
sum+=i;
}
return sum;
}
}
子节流&字节缓冲流
package com.company.generic;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStream01 {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("D:\\IDEA\\net\\study\\fos.txt");
fos.write(56);
byte[] byt = "abcdefg".getBytes();
fos.write(byt,0,byt.length);
fos.close();
}
}
字符流&字符缓冲流