En option paramétrage en Java avec les Génériques
Est est-il possible de spécifier le type par défaut lorsque parametrzing une classe?
Exemple:
//abstract class
public abstract class AbsClass<T1 extends Par1Class, T2 extends Par2Class> {
//code
}
//parametrized imlementation class
public class RealClass extends AbsClass<ClassThatExtendsPar1, ClassThatExtendsPar2Class> {
//code
}
//non-parametrized imlementation class
public class RealClass extends AbsClass {
//code
}
dans mon application, je dois spécifier AUCUN ou TOUS les paramètres. Est possible de faire le deuxième paramètre non obligatoire, quelque chose comme ceci:
//abstract class
public abstract class AbsClass<T1 extends Par1Class, T2 extends Par2Class : default Par2Class > {
//code
}
//parametrized only mandatory imlementation class
public class RealClass extends AbsClass<ClassThatExtendsPar1> {
//code
}
Vous devez vous connecter pour publier un commentaire.
Réponse Simple: non, java ne supporte pas par défaut de paramétrages comme ça.
Il n'est jamais vraiment une bonne raison de le faire. En général, vous spécifiez les paramètres de type générique, parce que certains des arguments de méthode de prendre ou de rendre un paramètre de ce type. Si non spécifié étaient valides, qui semblerait suggérer que vous l'intention de ne pas effectuer toute mise en œuvre concrète de ces méthodes.
De toute façon, pour résoudre votre problème, il suffit de spécifier un "Objet" pour tout type de paramètre que vous n'avez pas soin de préciser. Ou d'étendre la classe abstraite avec une autre classe abstraite qui n'a qu'un seul paramètre de type (en précisant l'Objet comme le deuxième paramètre de type dans votre étend à l'appel).
Bien, la bonne solution pour votre cas peut être