范例1:
class Message<T> {
private T t;
public void set(T t) {
this.t = t;
}
public T get() {
return this.t;
}
}
public class Demo {
public static void main(String[] args) {
Message<Integer> msgA = new Message<>();
Message<String> msgB = new Message<>();
msgA.set(100);
fun(msgA);
msgB.set("Hello World!");
fun(msgB);
}
public static void fun(Message<?> msg) {
System.out.println(msg.get());
}
}
================分割线================
范例2:设置泛型上限
class Message<T> {
private T t;
public void set(T t) {
this.t = t;
}
public T get() {
return this.t;
}
}
public class Demo {
public static void main(String[] args) {
Message<Double> msgA = new Message<>();
Message<Integer> msgB = new Message<>();
msgA.set(88.666);
msgB.set(99);
fun(msgA);
fun(msgB);
}
public static void fun(Message<? extends Number> msg) {
System.out.println(msg.get());
}
}
================分割线================
范例2:设置泛型下限
class Message<T> {
private T t;
public void set(T t) {
this.t = t;
}
public T get() {
return this.t;
}
}
public class Demo {
public static void main(String[] args) {
Message<Object> msgA = new Message<>();
Message<String> msgB = new Message<>();
msgA.set(99);
msgB.set("Hello World");
fun(msgA);
fun(msgB);
}
public static void fun(Message<? super String> msg) {
System.out.println(msg.get());
}
}
