Utilisation de la classe java.lang.Void
Bonjour à tous,
J'ai un problème de design et je voudrais avoir votre avis.
J'ai deux classes pour les quelles j'ai besoin de trouver un super type. Mais l'une des méthodes me pose problème. Comme le montre le code ci-dessus, ma méthode retourne soit un Object soit elle ne retourne rien.
Code:
1 2 3 4 5 6 7
|
public class C1 {
// La méthode retourne un Object
public Object m() {...}
} |
Code:
1 2 3 4 5 6 7
|
public class C2 {
// La méthode ne retourne rien
public void m() {...}
} |
Mes recherches m'ont conduit vers la classe java.lang.Void. Je peux alors faire du refectoring et obtenir le résultat suivant:
- Je définis d'abord mon interface commune à C1 et C2
Code:
1 2 3 4 5 6
|
public interface I<E> {
public E m();
} |
- Puis j'implémente C1
Code:
1 2 3 4 5 6 7
|
public class C1 implements I<Object> {
// La méthode retourne un Object
public Object m() {...}
} |
- Enfin j'implémente la classe C2 avec le fameux type Void
Code:
1 2 3 4 5 6 7 8 9 10
|
public class C1 implements I<Void> {
// La méthode ne retourne rien
public Void m() {
...
return null; // Cette valeur ne sera jamais utilisée.
}
} |
A première vue, mon objectif est atteint. Mais j'ai l'impression d'être passé à coté du vrai sens de la classe Void.
- Qu'en pensez-vous? Avez-vous déjà travaillé avec cette classe? Pour quoi faire?
- Void est-il à void ce que Integer est à int (i.e. un wrapeur)?
- J'ai l'impression que la seule utilité de Void est dans du code de réflexion. Qu'en pensez-vous?
- Si ma solution ne fait pas de sens, comment pourrais-je m'y prendre?
Merci d'avance pour vos réponses et commentaires.