1
2
3,泛型方法
类不需要是泛型类,例子
public class mainTest {
public <T> void f(T x){
System.out.println(x.getClass().getName());
}
public static void main(String []args)
{
mainTest mt=new mainTest();
mt.f("");
mt.f(1);
mt.f(1.0);
mt.f(1.0F);
mt.f('c');
mt.f(mt);
}
}
输出:
java.lang.String
java.lang.Integer
java.lang.Double
java.lang.Float
java.lang.Character
com.th.model.mainTest
T x获取Class,进而获取实例
泛型边界擦除,仅仅是容器
class HasF{
public void f()
{
System.out.println("HasF.f()");
}
}
class Manipulator<T>{
private T obj;
public Manipulator(T x){
obj=x;
}
public void manipulate(){
obj.f(); //无法识别,编译错误
}
}
public class mainTest2 {
public static void main(String []args)
{
HasF hasf=new HasF();
Manipulator<HasF>mp=new Manipulator<HasF>(hasf);
mp.manipulate();
}
}
修改如下
class HasF{
public void f()
{
System.out.println("HasF.f()");
}
}
class Manipulator<T extends HasF>{
private T obj;
public Manipulator(T x){
obj=x;
}
public void manipulate(){
obj.f();
}
}
public class mainTest2 {
public static void main(String []args)
{
HasF hasf=new HasF();
Manipulator<HasF>mp=new Manipulator<HasF>(hasf);
mp.manipulate();
}
}
即可