J'ai donc quelques classes 'Manager', par exemple GroupManager. Tous ces gestionnaires sont des singletons.Génériques Java, singletons et méthodes statiques
En utilisant cette méthode pour instanciation:
private static GroupManager groupManager = null;
private GroupManager()
{
}
public static GroupManager Instance()
{
if (groupManager == null)
{
groupManager = new GroupManager();
}
return groupManager;
}
Je pense que je devrais commencer à utiliser un héritage qu'ils ont beaucoup de méthodes copiées.
Les méthodes Instance() pour chaque gestionnaire sont les mêmes.
Donc, pour l'héritage que je peux le faire (évidemment):
GroupManager extends Manager
Est-il possible d'utiliser les médicaments génériques d'utiliser la même méthode d'instance pour tous les gestionnaires, quelque chose comme:
public class Manager<E>
{
private static E instance = null;
public static E Instance()
{
if (instance == null)
{
instance = new E();
}
return instance;
}
}
Je pense cela a du sens :)
Alors vous feriez GroupManager.Instance() comme d'habitude.
Java Generics ne sont en aucune façon la Identique aux modèles C++! Laisser aller! Vous ne pouvez jamais allouer un objet (c'est-à-dire appeler nouveau) en utilisant un Java Generic. Essayez une recherche google pour "Java Type Erasure" – DwB
Connexes: http://stackoverflow.com/questions/1927789/why-should-i-care-that-java-doesnt-have-reified-generics – BalusC
Manager E est un référence à un type générique. Il n'y a pas de moyen simple de configurer une classe pour allouer des objets d'un type qui n'est connu que lors de l'exécution. La réponse de Reid Mac est ce que j'essaierais. –
DwB