web-dev-qa-db-fra.com

Quel est le besoin de Void class in Java

Je ne suis pas clair avec la classe Java.lang.Void en Java. Quelqu'un peut-il développer cela avec un exemple?.

56
giri

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) ...
54
axtavt

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);
    }
}
45
TofuBeer

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.

1
juancancela