简述
Java泛型特性与C++中的模板特性在行为上是很类似的。
优缺点
优点
a、避免了类型转换;
b、把运行期一场提升到编译器,写代码编译时就会报错;
缺点
只能存储泛型指定的数据类型
泛型方法
定义
public class GenericMethod {
public static <T> void method1(T t)
{
System.out.println(t);
}
}
使用
public class mainFunction {
public static void main(String[] args){
GenericMethod.method1(1);
GenericMethod.method1("123");
}
}
结果
当然也可以使用普通方法。这里不再赘述。
泛型类
定义
/*
定义一个泛型类
* */
public class GenericClass<T> {
private T name;
public T getName() {
return name;
}
public void setName(T name) {
this.name = name;
}
}
使用
public class mainFunction {
public static void main(String[] args){
GenericClass<Integer> gc = new GenericClass<>();
gc.setName(1);
System.out.println(gc.getName());
GenericClass<String> gc1 = new GenericClass<>();
gc1.setName("abc");
System.out.println(gc1.getName());
}
}
结果
泛型接口
定义
接口定义
public interface GenericInterface<T> {
public abstract void method(T t);
}
接口实现一
public class GenericInterfaceImpl1 implements GenericInterface<String> {
@Override
public void method(String s) {
System.out.println(s);
}
}
接口实现二
public class GenericInterfaceImpl2<T> implements GenericInterface<T> {
@Override
public void method(T t) {
System.out.println(t);
}
}
使用
public class mainFunction {
public static void main(String[] args){
GenericInterfaceImpl1 gi = new GenericInterfaceImpl1();
gi.method("string");
GenericInterfaceImpl2<Integer> gi1 = new GenericInterfaceImpl2<>();
gi1.method(123);
GenericInterfaceImpl2<String> gi2 = new GenericInterfaceImpl2<>();
gi2.method("abc");
}
}