<?>
          
指的是Object及其子类,也就是所有Java对象
<E>
:Element (容器中的元素,如集合)      
    <T>
:Type(Java 类)      
    <K>
:Key(键)      
    <V>
:Value(值)      
    <N>
:Number(数值类型)      
    <S>
、<      U>
、      <A>
、      <B>
….    
        <T>
          
声明一个泛型类或者泛型方法
示例:
public class ResultDTO<T>  implements Serializable{
    private static final long serialVersionUID = 801125677591974439L;
	private int code;
	private String msg;
    @JsonInclude(JsonInclude.Include.NON_DEFAULT)
	private Object data;
	
	private ResultDTO(ResultEnum stateEnum, Object data) {
		this.code = stateEnum.getCode();
		this.msg = stateEnum.getMsg();
		this.data = data;
	};
    //setter
    //getter
}
  
        <?>
          
使用一个泛型类或者泛型方法
示例:
public static ResultDTO<?> entity(int code,Object... data) {
    ResultEnum resultEnum = ResultEnum.getEnum(code);
	if(0==data.length) {
		return new ResultDTO<ResultEnum>(resultEnum);
	}else{
		return new ResultDTO<Object>(resultEnum,data);
	}
}
  
为了解决容器中存储的元素不能是该基类(    父类
)的    子类
。  
关键字:      
        extends
      
    
禁止做插入操作,只做读取
最大只能是该      基类
(      父类
)的      子类
    
public static ResultDTO<? extends Object> entity1(int code,Object... data) {
	ResultEnum resultEnum = ResultEnum.getEnum(code);
	if(0==data.length) {
			return new ResultDTO<ResultEnum>(resultEnum);
	}else{
			return new ResultDTO<Object>(resultEnum,data);
	}
}
  
关键字:      
        super
      
    
最小只能是该      子类
,不能是该类的      子类
    
无法确定存入类型,可以插入操作,而无法读取操作
      Apple
继承      Fruit
,      Fruit
继承      Food
    
public static ResultDTO<? super Fruit> entity(int code,Object... data) {
	ResultEnum resultEnum = ResultEnum.getEnum(code);
	if(0==data.length) {
		return new ResultDTO<Food>(resultEnum);
	}if(1==data.length) {
		return new ResultDTO<Fruit>(resultEnum);
	}else{
		return new ResultDTO<Apple>(resultEnum,data);//报错
	}
}
  报错
Type mismatch: cannot convert from ResultDTO<Apple> to ResultDTO<? super Fruit>
extends super
<?>
[List<?>和List