où utiliser la classe object en java?
J'ai besoin de connaître la classe object en java.voici quelques code je veux savoir pourquoi nous les utilisons et où l'utiliser
Object obj = arg0.getItemAtPosition(arg2);
String str = obj.toString();
5 answers
Tous les "Object
"héritent de Object
, donc fondamentalement toute classe en Java est de type Object
, aussi.
Http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html
Pour cette raison, toutes les classes ont implicitement quelques méthodes:
Method Summary
protected Object clone()
boolean equals(Object obj)
protected void finalize()
Class getClass()
int hashCode()
void notify()
void notifyAll()
String toString()
void wait()
void wait(long timeout)
void wait(long timeout, int nanos)
Si nécessaire, vous pouvez remplacer ces méthodes pour fournir vos propres fonctionnalités.
Par exemple, vous pouvez remplacer la méthode toString
pour renvoyer un String
qui, selon vous, résume votre instance particulière du classe. Ensuite, si vous passez votre Object
à quelque chose comme System.out.println
, il affichera ce que la méthode toString
renvoie.
Pour plus de lecture:
Http://journals.ecs.soton.ac.uk/java/tutorial/java/javaOO/objectclass.html
Et voici un bel héritage tutoriels:
Http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html
Http://docs.oracle.com/javase/tutorial/java/concepts/inheritance.html
Http://www.cs.utexas.edu/~lavande/cours/tutoriel/java-06.pdf
Object
est une super classe de toutes les classes en Java. S'il est possible de renvoyer plus d'un type, l'objet sera renvoyé (ou) Si l'API conçue pour être plus générique, Object
sera renvoyé.
Comment utiliser l'objet retourné?
En fonction du contexte, vous devrez peut-être lancer (ou) faire toString()
comme vous l'avez fait.
La classe d'Objet est utilisé lorsque la classe spécifique d'une variable n'est pas connue. La classe Object est un parent de nombreuses classes (Integer, Sting, ...etc). Dans le cas mentionné ci-dessus, la classe getItemAtPosition()
renvoie une instance Object
car un spinner par exemple peut avoir de nombreux types de classe différents, il renvoie donc un général (Object), puis vous le convertissez en String (ou autres classes selon le cas) lorsque le type cible est connu dans le contexte.
Pourquoi nous l'utilisons parce que..
-
Java a choisi de faire d'une seule classe la classe parente ultime pour tout pour qu'il y ait un moyen facile de contourner tout arbitraire objet, sans avoir besoin de connaître son type
C'est-à-dire que vous pouvez utiliser le type d'objet déclaré pour faire référence à chaque élément dans le système de type, même les primitives utilisant leurs classes wrapper.
Java doit fonctionner sur toutes les plates-formes existantes (que ce soit mobile, Windows, Linux, etc.) et l'écriture d'une grande quantité de code à exécuter sur chaque plate-forme devait être une mission. Par conséquent, Java créé natif. De cette façon, tous les objets sont enregistrés en tant qu'objet natif que la JVM peut comprendre et exécuter. N'oubliez pas que la JVM est écrite en C++ (quelle que soit la plate-forme sur laquelle elle est exécutée).
- Pour le Garbage Collection, la méthode finalize est appelée par la JVM lorsque l'Objet n'est pas nécessaire.
Généralement, Object
ne doit être utilisé que lorsqu'il s'agit d'une collection d'éléments de type disparate ou inconnu. Ceci est ensuite généralement suivi par instanceof
et des instructions cast. De nombreuses API renvoient Object
alors qu'elles peuvent fournir des types disparates et certaines d'entre elles sont un holdover de Java 4 et plus avant les génériques. Dans la mesure du possible, cela devrait être remplacé par des génériques.
MODIFIER
Quelques règles de base, vous ne devriez JAMAIS faire ce qui suit: Object ob = new Object();
Il ne devrait jamais y avoir un raison d'instancier Object
dans n'importe quel code. Le SEUL moment où Ojbect
doit être utilisé est lorsque le type n'est pas connu.
Un exemple de la façon dont cela a changé avec les génériques est Collections.max
. En java 4 cette retourné Object
(Java 4 Collections), Dans la version 6 de java c'est une version qui renvoie un générique T
(Java 6 Collections).
Java 4: public static Object max(Collection coll)
Retourne Object
, car à ce moment - Collection
n'était pas générique
Java 6: public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)
Renvoie T
parce que post Java 5 Collection
est générique.
Le point étant que dans le passé, beaucoup d'API renvoyaient Object
simplement parce que Java n'avait pas de génériques. Maintenant, dans la plupart des cas, les génériques doivent être utilisés, mais toutes les API n'ont pas été mises à jour. À l'avenir, vous devriez toujours essayer d'utiliser des génériques au lieu d'un objet dans la mesure du possible.