Java - Typecasting de Java.lang.Objet instance d'une Classe personnalisée
Est-il un moyen de transtypage de Java.lang.Objet instance d'une mesure de classe.
En gros, j'ai créé une Pile (java.util.La pile) et ont poussé les instances de type my_class. Mais quand je pop à partir de la Pile, je reçois une instance de type Java.lang.Objet.
Dois-je créer un constructeur en my_class qui peut créer my_class cas de Java.lang.Objet ?
Génériques est la meilleure façon d'aller. Je suis assez nouveau à Java, et sans s'en rendre compte sur les génériques (comme en C++ STL), j'ai fait beaucoup de typecasting comme-
pour le convertir en entier: new Integer((Java.lang.De l'objet).toString()).intValue()
Suppose que ces jours sont révolus maintenant 🙂 Merci de rendre ma vie plus facile.
Vous devez vous connecter pour publier un commentaire.
Vous devez écrire du code à l'aide de médicaments génériques. Par exemple, au lieu de
vous pouvez laisser la pile de connaître le type de l'objet à l'intérieur:
Si, pour quelque raison que ce soit, ce n'est pas possible, vous pouvez lancer:
Vous pouvez convertir l'objet comme ceci:
Mais si vous définissez votre pile une pile de
my_class
alors vous n'avez pas besoin de s'embêter avec casting:Non, vous avez besoin de lire sur Java Génériques
Object
et il est considéré comme une mauvaise pratique moderne de Java. (Et d'ailleurs, ce n'était pas vraiment à sa question - la seule interrogation que je vois est quelque chose que la réponse est définitivement "non" 🙂 )Est-ce une question sérieuse?
My_class myClassObj = (My_class) obj;
En fait, comme dans toute autre langue que je connais.
Ou puis-je obtenir votre question mal?
Modifier
Vous pouvez bien sûr également utiliser un générique de la Pile.
Il suffit de lire le titre de votre question 😉
En référence à la réponse acceptée:
"
MyObject someObj = ...;
"Stack myStack = new Stack();
myStack.push(someObj);
someObj = (MyObject) myStack.pop();
Comme l'a noté, oui,
someObj = (MyObject) myStack.pop();
n'est-ce pas le plus sûr. Toutefois, si vous êtes toujours à la recherche de jeter un objet, utilisezinstanceof
EX:
Object obj = myStack.pop();
MyObject someObj = null;
if( obj instanceof MyObject )
someObj = (MyObject) obj;
======================================================================