Instancier des objets sans l'aide de l'opérateur new
Dans l'un des java interview, la question suivante est posée:
En java est-il possible d'instancier un objet sans l'aide de new
opérateur? Je lui répond qu'il n'y a pas d'autre moyen de l'instanciation. Mais il m'a demandé comment un objet en java est instancié avec les configurations dans un xml
fichier en java(dans le cadre du printemps). Je l'ai dit, à l'intérieur le printemps utilise reflection utils
pour créer un objet avec un new
de l'opérateur. Mais l'intervieweur n'a pas été convaincu par ma réponse.
J'ai vu ce lien à être utiles, mais il y a un new
opérateur indirectement impliqués dans l'une ou l'autre des méthodes internes.
Est-il vraiment un moyen pour instancier des objets en java sans utiliser new
opérateur?
- Vous pouvez créer un objet sans nouvelle à travers: Réflexion/newInstance, clone() et de la (dé)sérialisation. Je suis sûr qu'il y a un peu plus je n'ai pas pensé.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire en utilisant le Java API Reflection. C'est ainsi que le framework Spring DI œuvres (l'instanciation de l'objet à partir du xml).
Aussi,
Considérant
enum
être unspecial class
, les instances de l'enum sont créés sans l'aide denew
Opérateur.Un initialiseur de tableau de la forme suivante n'utilise pas
new
explicitement.Cela crée un objet ... par l'autoboxing:
Enfin, le résultat suivant dans la création d'objets quelque part dans le programme du cycle de vie 🙂
(Et il y a beaucoup, beaucoup de manières de le faire en utilisant des méthodes de bibliothèques ... ou du code natif)
Sous les couvertures, la création d'un nouvel objet en Java pur implique soit la
new
bytecode, ou l'un des 3new array
bytecode. Qui comprend probablement tous mes exemples.Il est intéressant de noter,
Object.clone()
etObjectInputStream.readObject()
fois l'utilisation de "magie" des mécanismes pour la création des instances qui n'impliquent pas la au-dessus de bytecode, et de ne pas appeler les constructeurs de la façon normale.votre pourrait utiliser jdbc de façon
Vous pouvez utiliser
clone
méthode pour créer une copie de l'objet sans nouvel opérateur.clone est utilisé pour faire une copie de l'objet. Il y a certaines choses que vous devriez garder à l'esprit tout en utilisant la méthode clone de l'Objet.
Exemple pour la classe String
Maintenant, nous n'allons pas utiliser l'opérateur new et nous allons créer un nouvel objet
Autre, vous pouvez utiliser Classe.forName()
public static de la Classe forName(String className)
throws ClassNotFoundException
Renvoie la Classe de l'objet associé à la classe ou de l'interface avec le nom de la chaîne.
Exemple -- Classe exampleClass = la Classe.forName(yourtClass);
Lire les docs officielles
http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#forName%28java.lang.String%29
Il y a quelques façons de créer l'objet en Java
1) méthode newInstance()
2) l'opérateur new
3) méthode clone()
4) la Désérialisation
Vous pouvez désérialiser un objet sans invoquer de nouveau.
Ok, vous devez appeler
new
sur leFileInputStream
et laObjectInputStream
, mais je suppose que c'est juste l'utilisation.Autant que je sache, la Classe.newInstance() et Constructeur.newInstance() de ne pas utiliser le
new
de mots clés à l'interne.D'autres façons de créer une instance sans le mot clé new:
Il y a seulement trois méthodes permettent d'instancier une classe sans utiliser l'opérateur new, et ils sont comme suit: