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.
- ¿Hay una manera de obtener la cuenta de los métodos numéricos utilizados en un archivo jar
- Android: Null Pointer Excepción al llamar a una nueva intención
- ContentResolver.requestSync en Sync Adapter no funciona en Android
- Tengo que hacer clic dos veces en el botón para que funcione
- Cómo hacer en el artículo seleccionado no elegir automáticamente la primera entrada
- Imprimir el contenido de un paquete a Logcat?
- Cómo convertir archivos .apk a java
- El proveedor de ubicación fusionado no obtiene ubicación a menos que GPS esté activado
- Ical parser android
- Android TextUtils esEmpty vs String.isEmpty
- Añadir filtros a un video como Instagram
- AdView ralentiza la aplicación completa, posible razón
- Solicitar permisos de tiempo de ejecución desde v4.Fragment y tener devolución de llamada ir a Fragment?
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; }
- Pruebe un sitio web para móviles para Android o BlackBerry
- Sólo el subproceso original que creó una jerarquía de vistas puede tocar sus vistas. En android