<?>
es una abreviatura de <? extends Object>
. Puede leer a continuación el enlace compartido para más detalles.
<?>
"?"
denota cualquier tipo desconocido, puede representar cualquier tipo de código para al. Utilice este comodín si no está seguro acerca de Type.
ArrayList<?> unknownList = new ArrayList<Number>(); //can accept of type Number
unknownList = new ArrayList<Float>(); //Float is of type Number
Nota:<?>
significa anythings. Por lo tanto, puede aceptar el tipo que no se hereda de la clase Object
.
<? extends Object>
<? extends Object>
significa que puede pasar un objeto o una sub-clase que se extiende Object
clase.
ArrayList<? extends Number> numberList = new ArrayList<Number>(); //Number of subclass
numberList = new ArrayList<Integer>(); //Integer extends Number
numberList = new ArrayList<Float>(); // Float extends Number
T - usado para denotar tipo
E - usado para denotar elemento
K - teclas
V - Valores
N - para números
Ref:
Es lo mismo. Consulte http://stackoverflow.com/questions/2274720/java-extends-object-question – Dan
@Dan Si busca "? Extends Object" en esa pregunta, no encuentra nada. Estoy leyendo las respuestas para ver si puedo inferir algo, pero no creo que sea esto. Específicamente, no está hablando de genéricos. – orbfish
@Dan - Esa es una pregunta diferente. He visto esta pregunta antes y recuerdo al menos una mención de una diferencia sutil. Déjame ver si puedo encontrarlo ... –