泛型通配符说明
- ? 表示不确定的java类型。
- T 表示java类型。
- K V 分别代表java键值中的Key Value。
- E 代表Element。
Object和泛型通配符区别? Object是所有类的根类,是具体的一个类,使用的时候可能需要类型强制转换的,但是用通配符 ?、T 、K 、V、 E 等这些的话,在实际用之前类型就已经确定了,不需要强制转换。
T 是固定的一种泛型,? 是只要是Object类的子类都可以,换言之,任何类都可以,因为Object是所有类的根基类。
比如:Interge,String就是<T extends Collection>,固定的泛型指类型是固定的T; <? extends Collection> 这里 ? 代表一个未知的类型, 但是,这个未知的类型实际上是Collection的一个子类,Collection是这个通配符的上限。
使用实例:
- 制定特定范型的实体类
<T> T
//如 JSONObject 的实体类转换方法
public static <T> T parseObject(String text, Class<T> clazz) {
return parseObject(text, clazz);
}
- 指定包含特定范型的特定范型的实体类
<T> MessageInfo<T>
//实例如下
public class MessageInfo<T> {
private TeldHeader teldHeader;
private T Payload;
}
public static <T> MessageInfo<T> receiveMsgDto(Message message, Class<T> cls){
//处理报文体内容
T t = JSONObject.parseObject(dealMsgBody(message), cls);
//处理报文头
TeldHeader teldHeader = dealMsgHeader(message);
return new MessageInfo<>(teldHeader,t);
}