Une classe java contient une variable d'instance qui est une List
.
Je dois définir le type d'objet que cette Liste
contient dans une variable String
.
Liste privée
Est-ce autorisé à faire dans JAVA Si oui, comment cela peut-il être réalisé?
Merci d'avance
3 Réponses :
Il serait préférable d'utiliser des génériques comme celui-ci
Liste privée
mais il est possible d'utiliser une chaîne pour représenter un nom de classe ou agir comme un identifiant unique, étant donné que vous le supportez vous-même
Tout d'abord, vous devrez créer une liste où T est le type d'objets contenus dans la liste.
Donc, votre code devrait se lire comme
liste privée
Depuis le javadoc,
le type d'éléments de cette liste.
Dans votre cas, le compilateur ne connaîtra pas le type d'éléments à ajouter à votre liste et donc cela ne fonctionnera pas.
Cependant, vous pouvez utiliser Liste
comme alternative, mais c'est généralement une odeur de code à long terme et très difficile à maintenir
Solution appropriée : vous pouvez écrire une interface à laquelle tous vos objets de l'ArrayList adhéreront. Continuez avec quelque chose comme
getCastedList(myList, Class.forName(VARIABLE));
Ne vous inquiétez pas du type d'objet dans la liste. J'espère que cela vous aidera!
Si vous êtes trop spécifique pour enregistrer dans String, voici une solution de contournement.
public static <T> List<T> getCastedList(List<Object> objList, Class<T> clazz) { List<T> newList = new ArrayList<T>(); if (objList != null) { for (Object object : objList) { if (object != null && clazz.isAssignableFrom(object.getClass())) { newList.add((T) object); } } } return newList; }
Et appelez cela comme
XXX
Heureux d'entendre @NiazAhsan :)
Je ne sais pas exactement quel est votre cas. Est-ce que ça va marcher ?
classe Test {Liste liste; }
.Je voulais faire quelque chose comme ceci
List myList = new ArrayList ();
Ouais c'est ce que j'ai fait ci-dessus. Utilisez un type générique.
Je ne sais pas ce que vous demandez, mais il vaut mieux utiliser génériques Java . Ou vous pouvez utiliser quelque chose comme
String variableType = myList.get (index) .class.getName ()
. Mais assurez-vous que votre liste est initialisée (non nulle) et non vide, et notez que vous ne devez jamais déclarer une variable package-private avec un nom d'identifiant en majuscules.