java.hereのオブジェクトクラスについて知る必要があります。なぜそれを使用するのか、どこで使用するのかを知りたいコードはほとんどありません
Object obj = arg0.getItemAtPosition(arg2);
String str = obj.toString();
すべてObject
の " " は から継承されObject
ているため、基本的に Java のすべてのクラスも 型Object
です。
http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html
このため、すべてのクラスには暗黙的にいくつかのメソッドがあります。
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)
必要に応じて、これらのメソッドをオーバーライドして、独自の機能を提供できます。
たとえば、メソッドをオーバーライドして、クラスの特定のインスタンスを要約していると感じるtoString
を返すことができます。String
次に、を のObject
ようなものに渡すと、メソッドが返すSystem.out.println
ものが出力されます。toString
詳細については、次を参照してください。
http://journals.ecs.soton.ac.uk/java/tutorial/java/javaOO/objectclass.html
そして、ここにいくつかの素晴らしい継承チュートリアルがあります:
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/~lavender/courses/tutorial/java-06.pdf
Object
Javaのすべてのクラスのスーパークラスです。複数の型を返す可能性がある場合は、オブジェクトが返されます (または) API がより汎用的に設計されている場合Object
は、返されます。
返されたオブジェクトの使用方法
コンテキストに基づいて、キャスト (または) しtoString()
たように行う必要がある場合があります。
なぜそれを使うのか..
Java は、単一のクラスをすべての最終的な親クラスにすることを選択したため、その型を知る必要なく、任意のオブジェクトを簡単に渡すことができます。
つまり、Object の宣言された型を使用して、ラッパー クラスを使用するプリミティブであっても、型システム内のすべての項目を参照できます。
Java は、存在するすべてのプラットフォーム (モバイル、Windows、Linux など) で実行する必要があり、各プラットフォームで実行する膨大な量のコードを作成することが使命でした。したがって、Java はネイティブを作成しました。そうすれば、すべてのオブジェクトが、JVM が理解して実行できるネイティブ オブジェクトとして登録されます。JVM は C++ で記述されていることを忘れないでください (実行されるプラットフォームに関係なく)。
通常Object
、異なるタイプまたは不明なタイプの要素のコレクションを処理する場合にのみ使用する必要があります。通常、この後にinstanceof
and cast ステートメントが続きます。多くの APIObject
は、異なる型を提供できるようになったときに戻ります。これの一部は、ジェネリックより前の Java 4 以前からの持ち越しです。可能な限り、これをジェネリックに置き換える必要があります。
編集
基本的なルールを組み合わせてください。次のことは絶対に行わないでください。どのコードでもObject ob = new Object();
インスタンス化する理由があってはなりません。タイプが不明な場合にObject
のみ使用してください。Ojbect
これがジェネリックでどのように変化するかの例はCollections.max
. Java 4 ではこれが返されましたObject
( Java 4 コレクションT
)。Java 6 では、ジェネリック( Java 6 コレクション)を返すバージョンがあります。
ジャワ 4:public static Object max(Collection coll)
Object
当時Collection
はジェネリックではなかったので返品
Java 6:public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)
T
Java 5 以降Collection
は汎用であるため、戻ります。
Object
Java にジェネリックがないという理由だけで、過去に多くの API が返されたことがポイントです。現在、ほとんどの場合、ジェネリックを使用する必要がありますが、すべての API が更新されているわけではありません。今後は、可能な限りオブジェクトの代わりにジェネリックを使用するようにしてください。
Object クラスは、変数の特定のクラスが不明な場合に使用されます。オブジェクト クラスは、多くのクラス (Integer、Sting など) の親です。上記の場合、たとえばスピナーは多くの異なるクラス型を持つことができるため、getItemAtPosition()
クラスはObject
インスタンスを返します。そのため、一般的なもの (オブジェクト) を返し、それを文字列 (または場合によっては他のクラス) にキャストします。コンテキストでターゲット タイプがわかっている場合。