Je ne suis pas clair avec la classe Java.lang.Void
en Java. Quelqu'un peut-il développer cela avec un exemple?.
Il contient également Void.TYPE
, utile pour tester le type de retour avec réflexion:
public void foo() {}
...
if (getClass().getMethod("foo").getReturnType() == Void.TYPE) ...
Supposons que vous souhaitiez avoir un générique qui retourne vide pour quelque chose:
abstract class Foo<T>
{
abstract T bar();
}
class Bar
extends Foo<Void>
{
Void bar()
{
return (null);
}
}
En fait, il existe un cas pragmatique où void.class est vraiment utile. Supposons que vous deviez créer une annotation pour les champs de classe et que vous deviez définir la classe du champ pour obtenir des informations à ce sujet (par exemple, si le champ est une énumération, pour obtenir la liste des valeurs potentielles). Dans ce cas, vous auriez besoin de quelque chose comme ceci:
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface PropertyResourceMapper
{
public Class acceptedValues() default void.class;
}
à utiliser comme ceci:
@PropertyResourceMapper(acceptedValues = ImageFormat.class, description = "The format of the image (en example, jpg).")
private ImageFormat format;
Je l'ai utilisé pour créer un sérialiseur de classes personnalisé dans un format propriétaire.