泛型的作用:泛型实现了参数化类型,能编写重用性更好的代码。使用泛型时不需要指定具体的参数类型,由编译器指定参数类型值。
- 在类中使用泛型
class Automobile {}
public class Holder<T> {
private T a;
public Holder(T a) {
this.a = a;
}
public T get() {
return a;
}
public static void main(String[] args) {
//在创建Holder对象时必须指定具体的对象类型
Holder<Automobile> h = new Holder<Automobile>(new Automobile());
h.get();
}
}
- 在方法中使用泛型,原则上尽量使用泛型方法。尤其讲static方法置为泛型方法。
public class GenericMethods {
public <T> void f(T x) {
System.out.println(x.getClass().getName());
}
public static void main(String[] args) {
GenericMethods gm = new GenericMethods();
gm.f("");
gm.f(1);
gm.f(1.0);
gm.f(1.0F);
gm.f('c');
gm.f(true);
}
}
//输出结果
java.lang.String
java.lang.Integer
java.lang.Double
java.lang.Float
java.lang.Character
java.lang.Boolean
分析:f()方法会被无数次重载,也可以传递new GenericMethod()参数。该方法在传入基本类型的参数时,
自动打包机制会将其包装成相应的对象。