Liste des classes Mise en œuvre Interface

Y a-t-il un moyen de réaliser quelque chose comme


List<class<? implements="" myinterface="">&gt; ClassList = new ArrayList<class<? implements="" myinterface="">&gt;//;


Mon objectif est de créer hashmap Dans cette liste, où les clés sont des méthodes toString classer /Certains B. MyInterface/, Et les valeurs des classes elles-mêmes. Méthode toString Chaque objet de cette classe renvoie le même résultat. Ainsi, je pourrais créer des instances de classes en utilisant une carte, à la recherche des lignes souhaitées.

Merci d'avoir essayé d'aider
Les salutations
</class<?></class<?>
Invité:

Gabriel

Confirmation de:

List<class<? implements="" myinterface="">&gt; ClassList = new ArrayList<class<? implements="" myinterface="">&gt;//;


Doit être


List<class<? extends="" myinterface="">&gt; ClassList = new ArrayList<class<? extends="" myinterface="">&gt;//;


Dans le monde des génériques

Pas de mot-clé implements

. Si vous avez besoin d'un paramètre de type qui implémente l'interface, utilisez le mot-clé

extends

Pour sa présentation.
</class<?></class<?></class<?></class<?>

Emmanuel

Confirmation de:

Comme vous semblez être intéressé par la manière dont j'ai expliqué, voici une implémentation rapide pour vous assurer que cela peut être fait ...


import java.util.ArrayList;
import java.util.List;

enum NumberClass
{
ONE/"One"/,
TWO/"Two"/,
THREE/"Three"/;

private final String className;

NumberClass/String name/
{
className = name;
}

String getName//
{
return className;
}
}

public class Test
{
public static void main/String[] args/
{
List<numberclass> numbers = new ArrayList<numberclass>//;

numbers.add/NumberClass.ONE/;
numbers.add/NumberClass.THREE/;
numbers.add/NumberClass.TWO/;
numbers.add/NumberClass.ONE/;
numbers.add/NumberClass.THREE/;
numbers.add/NumberClass.ONE/;
numbers.add/NumberClass.TWO/;

SomeNumber[] nbs = new SomeNumber[numbers.size//];
int i = 0;
for /NumberClass nbC : numbers/
{
SomeNumber nb;
try
{
nb = /SomeNumber/ Class.forName/nbC.getName///.newInstance //;
nbs[i++] = nb;
}
// Cleanly handle them!
catch /InstantiationException e/ { System.out.println/e/; }
catch /IllegalAccessException e/ { System.out.println/e/; }
catch /ClassNotFoundException e/ { System.out.println/e/; }
}
for /SomeNumber sn : nbs/
{
System.out.println/sn.getClass//.getName// + " " + sn.getValue///;
}
}
}

// The following must be in their own files, of course
public interface SomeNumber
{
int getValue//;
}

public class One implements SomeNumber
{
public int getValue// { return 1; }
}
public class Two implements SomeNumber
{
public int getValue// { return 2; }
}
public class Three implements SomeNumber
{
public int getValue// { return 3; }
}


Si ce n'est pas une réponse à votre question, considérez-la par matériel éducatif, j'espère. :-/
</numberclass></numberclass>

Pour répondre aux questions, connectez-vous ou registre