Comment créer une liste de tableaux de Classes?
J'ai quelques classes (Car
, Motorcycle
, Train
... etc) qui s'étend à partir de class Vehicle
.
À partir d'une autre Classe, j'ai besoin de créer un ArrayList
de Classes pour l'accès seulement à ceux qui inlude les ArrayList
.
Le concept est semblable à cela, mais évidemment ça ne fonctionne pas;
ArrayList<Class> vehicleType=new ArrayList<Class>();
vehicleType.add(Class.forName("train"));
Comment puis-je le résoudre ?
Grâce
Il n'y a aucune raison pour laquelle cela ne devrait pas fonctionner. Quels messages d'erreur, le cas échéant, êtes-vous?
Classe.forName("Train"), peut-être? Sensible à la casse?
Je ne suis pas familier avec java, mais ne
Peut-être le nom de la classe est
Un avertissement n'est pas un problème. Pour l'obtenir, il fonctionne, suivez Dave réponse. Je suppose que l'avertissement que vous obtenez est sur le unparameterized Classe de référence. Utilisez ceci:
Classe.forName("Train"), peut-être? Sensible à la casse?
Je ne suis pas familier avec java, mais ne
ArrayList<Vehicle>
faire ce que vous voulez?Peut-être le nom de la classe est
Train
et votre forName()
appeler train
, qui ne correspond pas à la première lettre?Un avertissement n'est pas un problème. Pour l'obtenir, il fonctionne, suivez Dave réponse. Je suppose que l'avertissement que vous obtenez est sur le unparameterized Classe de référence. Utilisez ceci:
ArrayList<Class<? extends Vehicle>>
.
OriginalL'auteur Fischer | 2011-10-25
Vous devez vous connecter pour publier un commentaire.
La plupart des réponses suivre votre suggestion de l'aide
Class.forName()
, si ce n'est pas nécessaire. On peut "appeler".class
sur le nom du type.Prendre un coup d'oeil à ce test JUnit:
Je en droit d'attendre pour votre besoin de la liste serait de type
Class<? extends Vehicle>
OriginalL'auteur Noel M
Si vous allez utiliser le chargeur de classes (
Class.forName
), vous devez utiliser le nom de classe entièrement qualifié, c'est à direClass.forName("com.package.Train");
, exactement comme vous le feriez de référence de la ligne de commande.OriginalL'auteur Dave
Essayer:
Il fera en sorte que toutes les classes ajoutées à
vehicleType
étendreVehicle
. Et, cette classeTrain
existe réellement.Il est rarement nécessaire d'utiliser des classes de cette façon. Essayez de trouver un moyen plus simple de résoudre votre problème.
OriginalL'auteur Piotr Praszmo
Classe.forName("Train"), peut-être? Sensible à la casse?
OriginalL'auteur Salvatore Previti
Si "train" est le simple nom de la classe, puis ce sera de faire le travail
De toute façon alors que vous ne nous dites pas quelle est l'erreur (ou exception) message on ne peut plus.
OriginalL'auteur PeterMmm