java 泛型上下限
作用:使用泛型上下限可以限制使用的数据类型
*********************
泛型上下限使用
类的泛型上限
class B<T extends Number>{ //T只能是NUmber类、或者其子类
private T t;
public T getT() {
return t;
}
public void setT(T t) {
this.t = t;
}
}
注意:没有class B<T super Number>这种使用方法
方法泛型上下限
class C2 {
public static void fun(C<? super String> c){ //接受的数据类型只能为String、Object
System.out.println(c.getT());
}
public static void fun2(C<? extends Number> c){ //接受的数据类型只能为Number及其子类
System.out.println(c.getT());
}
}
*********************
示例:泛型上限类
class B<T extends Number>{
private T t;
public T getT() {
return t;
}
public void setT(T t) {
this.t = t;
}
}
public class MyTest4 {
public static void main(String[] args){
B<Integer> b=new B<>();
b.setT(10);
System.out.println(b.getT());
}
}
****************
控制台输出
10
*********************
示例:泛型方法上下限
package hello;
class C<T>{
private T t;
public T getT() {
return t;
}
public void setT(T t) {
this.t = t;
}
}
public class MyTest5 {
public static void fun(C<? super String> c){
System.out.println(c.getT());
}
public static void fun2(C<? extends Number> c){
System.out.println(c.getT());
}
public static void main(String[] args){
C<String> c=new C<>();
c.setT("瓜田李下");
fun(c);
C<Integer> c2=new C<>();
c2.setT(10);
fun2(c2);
}
}
****************
控制台输出
瓜田李下
10