59 votes

Quelle est l'utilité de la classe Void en Java ?

Je ne suis pas clair avec la classe java.lang.Void en Java. Quelqu'un peut-il nous donner des précisions à ce sujet à l'aide d'un exemple ?

58voto

axtavt Points 126632

Il contient également Void.TYPE utile pour tester le type de retour avec la réflexion :

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

49voto

TofuBeer Points 32441

Disons que vous voulez avoir un générique qui renvoie void pour quelque chose :

abstract class Foo<T>
{
    abstract T bar();
}

class Bar
    extends Foo<Void>
{
    Void bar()
    {
        return (null);
    }
}

1voto

juancancela Points 124

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 à son sujet (par exemple, si le champ est un enum, 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;
}

pour être utilisé comme ça :

@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 vers un format propriétaire.

-3voto

Arulraj Points 51

De la Docs Java :

public final class Void
extends Object

La classe Void est une classe de remplacement non substantielle qui contient une référence à l'objet Class représentant le mot-clé Java void.

static Class<Void> TYPE 

L'objet Classe représentant le type primitif Java void.

TYPE
public static final Class<Void> TYPE

L'objet Classe représentant le type primitif Java void.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X