Donc, je pense que mon design a été quelque peu désordonné, Voici ce que j'ai obtenu.Utiliser les méthodes de classe en utilisant la réflexion
Mon application a besoin de beaucoup d'enums, chacun contient plusieurs objets initialisés et une méthode "Get Best".
enum MyNumberEnum{
First("First", 1)
Third("Third", 3)
public String name;
public int num;
MyNumberEnum getBest(int num){
MyNumberEnum bestNumber = First;
for (MyNumberEnum number: MyNumberEnum.values()) {
if (number.num <= num)
bestNumber = number;
}
return bestNumber ;
}
}
Tous les énumérations ont la même getBest et tous devraient avoir le champ num, Parce que énumérations ne peut pas étendre, pensée l'interface peut-être pourrait aider ici, mais si un ENUM implémente une interface alors chacun il y a des cas mettre en œuvre tout simplement pas l'enum itslef. J'ai donc pensé que peut-être créer une classe et à l'intérieur mettre l'énumération, alors je pourrais étendre la méthode get best.
Donc pour le rendre facile à utiliser, j'ai créé un HashMap Et puis ajouté map.put (« Numéro », MyNumberClass.class)
Mais je suis arrivé à un point que je suis l'objet de classe, Comment puis-je utiliser sa méthode getBest?
Merci et désolé pour ma stupidité!
vous dire que vous avez l'instance de classe ou de type? – nullpointer
@nullpointer J'utilisé map.put ("Numéro", MyNumberClass.class) Alors je me MyNumberClass.class Je pense qu'il est le modifier le type de classe : Le hashmap decleration HashMap> –
Cela vous aidera à aller https://docs.oracle.com/javase/tutorial/reflect/member/methodInvocation.html...cheter quelque chose et revenir si cela ne fonctionne pas. – nullpointer