泛型(Generic) 通配符<?>
引入通配符<?>
class Message<T> {
private T message;
public T getMessage() {
return message;
}
public void setMessage(T message) {
this.message = message;
}
}
public static void fun1(Message<String> temp) {
System.out.println(temp.getMessage());
}
public static void fun2(Message<Integer> temp) {
System.out.println(temp.getMessage());
}
fun1(Message<String> temp)
和 fun2(Message<Integer> temp)
仅类型不同,方法内容都一样,可不可以抽取成共通方法呢 ?
通配符<?>
就可以解决这个问题。通配符可以解决参数统一
问题,把方法和泛型参数解耦
public static void fun(Message<?> temp) {
System.out.println(temp.getMessage());
}
Message<String> msg1 = new Message();
msg1.setMessage("hello world");
fun(msg1);// hello world
Message<Integer> msg2 = new Message();
msg2.setMessage(100);
fun(msg2);// 100
通配符 <?>
和 类型参数
的区别
对编译器来说所有的 T
都代表同一种类型。要么都是 String
,要么都是 Integer
。但通配符<?>
没有这种约束,String
可以,Integer
可以… Plate<?>
表示盘子里放啥都可以!
还没有评论,来说两句吧...