1.
静态方法不可以访问类上定义的泛型
系统会提示"Cannot make a static reference to the
non-static type T"
如果静态方法操作的应用数据类型不确定,可以将泛型定义
在方法上。
如下所示:
public static <W> void staticMethod(W w)
{
System.out.println("staticMethod :"+ w);
}
普通方法也可以这样定义
public <K> void show( K k)
{
System.out.println("Show :"+ k);
}
2.
<? extends T>和<? super T>是Java泛型中的“通配符
(Wildcards)”和“边界(Bounds)”的概念。
<? extends T>:是指 “上界通配符(Upper Bounds
Wildcards)”
‚ <? super T>:是指 “下界通配符(Lower Bounds
Wildcards)”
如下所示:
public static void fun2(Info<? extends Number> temp){ // 只能接收Number及其Number的子类
System.out.print(temp + "、") ;
}
public static void fun3(Info<? super Number> temp){ // 只能接收Number或Object类型
System.out.print(temp + "、") ;
}
生动形象的说就是? extends Number,指该泛型是继承Number类的;? super Number,指该泛型是Number类的父类或更后面的类;
详见https://www.zhihu.com/question/20400700
泛型的描述详见:
http://www.cnblogs.com/wanqieddy/p/4015922.html