泛型类上设置的泛型只能传递给非静态方法,如果静态方法想使用泛型,必要使静态方法变为静态泛型方法.
/**
* 泛型
* @param <T>
*/
class Point<T>{
static T getInstance(){ //'Test.Point.this' cannot be referenced from a static contex
}
static <T> T getInstance(){ //正确
}
}
因为类的静态是在创建对象是指定的,而静态方法不依赖于对象,静态属于类
-------------------------------------------------------
泛型方法在调用时,泛型的类的确定取决于括号内传入的参数
class Point{
static public <T> T doWork(T num) {
return num;
}
}
//
System.out.println(Point.doWork(Integer.valueOf(1)));
传入一个Integer参数,则T就是Integer,doWork()方法也会返回一个Integer对象.