可以通过泛型上限和下限的配置实现更加严格的类范围定义。
- 【类或方法】设置泛型的上限(? extends 类):只能够使用当前类或当前类的子类设置泛型类型。例如:? extends Number可以设置Number或Number子类(如:Integer、Double)。
- 【方法】设置泛型的下限(? super 类):只能够设置指定的类或指定类的父类。例如:? super String只能设置String或String的父类Object。
1、设置泛型上限的例子:
package com.mydemo;
public class GenericDemo {
public static void main(String[] args) {
// 实例化Message类对象
Message<Integer> message = new Message<>();
message.setContent(18);
fun(message);
}
public static void fun(Message<? extends Number> message) {
System.out.println(message.getContent());
}
}
// 定义泛型类对象
class Message<T extends Number> {
private T content; // 泛型属性
public T getContent() {
return content;
}
public void setContent(T content) {
this.content = content;
}
}
运行结果:
18
2、设置泛型下限的例子:
package com.mydemo;
public class GenericDemo {
public static void main(String[] args) {
// 实例化Message类对象
Message<String> message = new Message<>();
message.setContent("泛型下限设置");
fun(message);
}
public static void fun(Message<? super String> message) {
System.out.println(message.getContent());
}
}
// 定义泛型类对象
class Message<T> {
private T content; // 泛型属性
public T getContent() {
return content;
}
public void setContent(T content) {
this.content = content;
}
}
运行结果:
泛型下限设置