No estoy seguro con la clase java.lang.Void
en Java. ¿Alguien puede explicar esto con un ejemplo?Cuál es la necesidad de la clase Void en Java
Respuesta
decir que quiere tener un genérico que devuelve void algo:
abstract class Foo<T>
{
abstract T bar();
}
class Bar
extends Foo<Void>
{
Void bar()
{
return (null);
}
}
También contiene Void.TYPE
, útil para las pruebas de tipo de retorno con la reflexión:
public void foo() {}
...
if (getClass().getMethod("foo").getReturnType() == Void.TYPE) ...
+1 para señalar que se usa en reflexión para especificar el tipo de método que no tiene valor de retorno. – stacker
En realidad, también hay void.class (¡minúsculas!) Que también funcionaría perfectamente en su ejemplo. Entonces Void no es necesario allí. – whiskeysierra
De hecho, Void.TYPE se define como public static final Class
Desde el Java docs:
public final class Void
extends Object
La clase Void es una clase de marcador de posición no implementable para h antigua una referencia al objeto Class que representa la palabra clave Java void.
static Class<Void> TYPE
Objeto de clase que representa el tipo primitivo de Java void.
TYPE
public static final Class<Void> TYPE
Objeto de clase que representa el tipo de Java primitivo void.
Esto es solo copiar y pegar de la documentación, no es una respuesta real. – WhyNotHugo
@Hugo Eso es cierto, pero aún así encontré que esta es la respuesta más útil. Otras respuestas evitan por qué existe. Es la representación de clase de un tipo primitivo. Como entero o doble. – scottbot95
También debe mencionar que el único término que habita Void es nulo. –
En realidad, hay un caso pragmático en el que void.class es realmente útil. Supongamos que necesita crear una anotación para los campos de clase, y necesita definir la clase del campo para obtener información al respecto (en el ejemplo, si el campo es una enumeración, para obtener una lista de valores posibles). En ese caso, se necesitaría algo como esto:
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface PropertyResourceMapper
{
public Class acceptedValues() default void.class;
}
para ser utilizado como esto:
@PropertyResourceMapper(acceptedValues = ImageFormat.class, description = "The format of the image (en example, jpg).")
private ImageFormat format;
he utilizado esto para crear un serializador personalizado de clases a un formato propietario.
- 1. ¿Cuál es la necesidad del marco de recopilación en Java?
- 2. ¿Cuál es la diferencia entre void * y void **?
- 3. ¿Cuál es la necesidad de la función de javascript getUTCFullYear()?
- 4. ¿Cuál es la necesidad de un constructor privado en C#?
- 5. ¿Cuál es la necesidad de String array en el método principal de JAVA
- 6. ¿Cuál es la necesidad de normalizar un vector?
- 7. ¿Cuál es el propósito del cargador de la clase Java?
- 8. no se puede convertir '* void (MyClass :: *) (void *) en void * (*) (void *) en la función pthread_create
- 9. Extendiendo AsyncTask <Void, Void, Void>
- 10. ¿Cuál es la diferencia entre Calendar.WEEK_OF_MONTH y Calendar.DAY_OF_WEEK_IN_MONTH en la clase Calendar de Java?
- 11. ¿cuál es la referencia difícil en java?
- 12. La necesidad de métodos getter
- 13. ¿Cuál es la complejidad de tiempo de LinkedList.getLast() en Java?
- 14. ¿cuál es el uso real de la interfaz en java?
- 15. ¿Cuál es el problema de la clase base frágil?
- 16. ¿Cuál es el uso de la interfaz clonable en java?
- 17. ¿Cuál es la mejor alternativa para la serialización de Java?
- 18. ¿Cuál es el significado de la siguiente sintaxis en iOS ?. typedef void (^ algo) (NSInteger * a);
- 19. ¿Cuál es el propósito de la serialización en Java?
- 20. ¿Qué es una biblioteca nativa? ¿Cuál es la necesidad de atar?
- 21. Uso de GeoTools: ¿Cuál es la latitud y la longitud en la clase com.vividsolutions.jts.geom.Coordinate?
- 22. ¿Cuál es la necesidad de un atributo de valor no guardado en hibernación?
- 23. IntelliJ IDEA + Maven ¿cuál es la necesidad de entradas de dependencia en un archivo iml?
- 24. ¿Cuál es el significado de la clase java.io.Serializable?
- 25. ¿Cuál es la diferencia entre referencias y objetos en Java?
- 26. ¿Cuál es la clase NSCFNumber en iOS 4.1?
- 27. ¿Cuál es la mejor base de datos de objetos Java?
- 28. ¿Cuál es la necesidad de tener parámetros "nmem" y "tamaño" en las funciones C?
- 29. ¿Cuál es la sobrecarga de memoria de un método Java?
- 30. ¿Cuál es el objetivo de la clase StatusBarItem en WPF?
El problema es que la clase Void existe desde jdk 1.1. – Roman
Me gusta la respuesta de TofuBeer, pero Roman planteó un punto interesante allí. – whiskeysierra
No está allí estrictamente para eso, fue solo el primer uso que se me ocurrió. La respuesta de reflexión es por qué fue presentada. – TofuBeer