Quel est le besoin de la classe Void en Java

Je ne suis pas clair avec la classe java.lang.Void en Java. Est-ce que quelqu’un peut élaborer avec un exemple?

Il contient également Void.TYPE , utile pour tester le type de retour avec reflection:

 public void foo() {} ... if (getClass().getMethod("foo").getReturnType() == Void.TYPE) ... 

Disons que vous voulez avoir un générique qui retourne nul pour quelque chose:

 abstract class Foo { abstract T bar(); } class Bar extends Foo { Void bar() { return (null); } } 

En fait, il existe un cas pragmatique où void.class est vraiment utile. Supposons que vous ayez besoin de créer une annotation pour les champs de classe et que vous devez 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; } 

être utilisé 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 personnalisé de classes dans un format propriétaire.

À partir des documents Java :

 public final class Void extends Object 

La classe Void est une classe d’espace réservé instable pour contenir une référence à l’object Class représentant le mot-clé Java vide.

 static Class TYPE 

L’object Class représentant le type de primitif Java vide.

 TYPE public static final Class TYPE 

L’object Class représentant le type de primitif Java vide.