Y a-t-il un moyen de typecast de java.lang.Object à une instance d'une classe définie personnalisée. P>
Essentiellement, j'ai créé une pile (java.util.stack) et j'ai poussé dans les instances de type my_class. Mais quand je sors de la pile, je reçois une instance de type java.lang.Object. P>
Dois-je créer un constructeur dans my_class qui peut créer mes instances_class à partir de java.lang.Object? p>
se convertir en un entier: neuf entier ((java.lang.Object) .Tostring ()). Intvalue () P>
Devinez que ces jours sont partis maintenant :) Merci de rendre ma vie facile. p>
6 Réponses :
Vous devez écrire du code en utilisant des génériques. Par exemple, au lieu de
MyObject someObj = ...; Stack myStack = new Stack(); myStack.push(someObj); someObj = (MyObject) myStack.pop(); // This works too, but is considered very bad style
Non, vous devez vous relire sur Java Generics
Je suis d'accord sur les génériques, mais la réponse à la question n'est pas non.
Si vous écrivez un nouveau code, alors oui, c'est. Il n'y a littéralement aucune raison de lancer et de partir de objet code> et il est considéré comme une mauvaise pratique avec Java moderne. (Et d'ailleurs, ce n'était pas réellement sa question - la seule question de point que je vois est après quelque chose que la réponse est définitivement "non" :))
Vous pouvez lancer l'objet comme celui-ci: mais si vous définissez votre pile en tant que pile de my_class code> alors vous n'avez pas besoin de vous embêter avec le casting : p>
est-ce une question sérieuse? P>
my_class myClassobj = (my_class) obj; p>
En fait comme dans une autre langue que je sache. Ou est-ce que je fais mal à votre question? P>
Vous pouvez bien sûr utiliser également une pile générique.
Il suffit de lire le titre de votre question en réalité;) p>
En référence à la réponse acceptée: P>
" Comme indiqué, oui, ex: p>
myObject TOOOBJ = ...;;
Pile mystack = nouvelle pile ();
mystack.push (ToObJ);
someobj = (myObject) mystack.pop (); code> " p>
someobj = (myObject) mystack.pop (); code> n'est pas le plus sûr. Cependant, si vous souhaitez toujours lancer un objet, utilisez l'instance
code> p>
objet obj = mystack.pop ();
MyObject TOOOBJ = NULL;
Si (l'instance OBJ de MyObject)
Someobj = (myObject) obj; code> p>
for(Object im:list){ Object[] a=(Object[]) im; System.out.println("subject ="+a[0]+"total questions ="+a[1]); }
pour (objet IM: liste) {objet [] A = (objet []) im; System.out.println ("sujet =" + a [0] + "Questions totales =" + A [1]); }
Comment cette réponse aide-t-elle quelqu'un?