Entendiendo Clase <?>

Me encontré con este código:

public class RestfulAdage extends Application { @Override public Set<Class<?>> getClasses() { Set<Class<?>> set = new HashSet<Class<?>>(); set.add(Adages.class); return set; } } 

No entiendo qué Class<?> Significa.

Class<?> refiere a una clase de tipo desconocido. La notación utiliza un genérico sin límites que no limita el tipo de clase que se puede agregar a la colección. Por ejemplo, lo siguiente no funcionaría

 Set<Class<String>> set = new HashSet<Class<String>>(); set.add(Adages.class); // type not allowed 

La clase es una clase parametrizable, por lo tanto puede usar la clase de sintaxis donde T es un tipo. Al escribir Clase, está declarando un objeto de clase que puede ser de cualquier tipo (? Es un comodín). El tipo de clase es un tipo que contiene metainformation acerca de una clase.

Siempre es una buena práctica referirse a un tipo genérico especificando su tipo específico, usando Clase que está respetando esta práctica (usted sabe que la clase es parametrizable) pero no está restringiendo su parámetro para tener un tipo específico.

Referencia sobre genéricos y comodines: http://docs.oracle.com/javase/tutorial/java/generics/wildcards.html

Referencia sobre el objeto de clase y la reflexión (característica del lenguaje Java utilizada para introspección): http://java.sun.com/developer/technicalArticles/ALT/Reflection/

En código genérico, el signo de interrogación (?), Llamado comodín, representa un tipo desconocido. El comodín se puede utilizar en una variedad de situaciones: como el tipo de un parámetro, campo o variable local; A veces como un tipo de retorno (aunque es mejor la práctica de programación para ser más específico). El comodín nunca se utiliza como argumento de tipo para una invocación de método genérico, una creación de instancia de clase genérica o un supertipo.

En las siguientes secciones se analizan los comodines con más detalle, incluidos los caracteres comodín superior, los comodines limitados inferiores y la captura de comodines.

Para más información haga clic aquí

Se refiere a gererics. Le sugiero que lea un poco sobre ello. Básicamente, sólo sabes en tiempo de ejecución qué tipo de objeto puedes trabajar. Por ejemplo, Class puede ser Integer, String o incluso YourDefinedClassType
Lea aquí http://java.sun.com/developer/technicalArticles/J2SE/generics/

De: comodines

En código genérico, el signo de interrogación (?), Llamado comodín, representa un tipo desconocido. El comodín se puede utilizar en una variedad de situaciones: como el tipo de un parámetro, campo o variable local; A veces como un tipo de retorno (aunque es mejor la práctica de programación para ser más específico). El comodín nunca se utiliza como argumento de tipo para una invocación de método genérico, una creación de instancia de clase genérica o un supertipo.

Revise el enlace, encontrará documentación más exhaustiva, ejemplos, etc.

Suponga que tiene un conjunto de clases que pertenecen a tipos diferentes y también tiene instancias de diferentes clases . Por lo tanto, si desea comprobar si estas instancias son instanceof una de estas clases, podría iterar a través de estos conjuntos y hacer el trabajo. Y para ese tipo de trabajo, es mejor utilizar un conjunto totalmente sin restricciones:

 public boolean checkClasses(Set<Class<?>> typeLessClassSet, Set instances){ while(typeLessClassSet.hasNext()){ Class c = typeLessClassSet.next(); while(instances.hasNext()){ Object o = instances.next(); if(o instanceof c) return true; } } return false; } 
  • Uso de Picasso para cargar una imagen en un mapa de bits
  • La carpeta SRC de Eclipse está vacía (la clase MainActivity no se ha creado) después de crear un nuevo proyecto android con Eclipse
  • Seguridad y autenticación cliente-servidor
  • ¿Cómo configura Facebook las cookies con FB Init en la configuración "Facebook Connect"?
  • ¿El método String isEmpty no está disponible en los niveles de API de Android <10?
  • Android 4.0 -> 4.3 (incluido) - Almacenamiento web perdido entre las páginas de visualización web
  • @ Convertido a% 40 en la solicitud HTTPPost
  • Android analizando la cadena hasta la fecha con SimpleDateFormat
  • ¿Cómo obtener el último valor de BehaviorSubject?
  • Importar fanfarronería en el proyecto existente en Android Studio
  • R no se puede resolver con una variable: ejemplo de Chromecast
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.