0

java.hereのオブジェクトクラスについて知る必要があります。なぜそれを使用するのか、どこで使用するのかを知りたいコードはほとんどありません

Object obj = arg0.getItemAtPosition(arg2);
String str = obj.toString();
4

5 に答える 5

2

すべて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

于 2012-09-05T12:39:17.397 に答える
1

ObjectJavaのすべてのクラスのスーパークラスです。複数の型を返す可能性がある場合は、オブジェクトが返されます (または) API がより汎用的に設計されている場合Objectは、返されます。

返されたオブジェクトの使用方法

コンテキストに基づいて、キャスト (または) しtoString()たように行う必要がある場合があります。

于 2012-09-05T12:38:16.343 に答える
1

なぜそれを使うのか..

  • Java は、単一のクラスをすべての最終的な親クラスにすることを選択したため、その型を知る必要なく、任意のオブジェクトを簡単に渡すことができます。

    つまり、Object の宣言された型を使用して、ラッパー クラスを使用するプリミティブであっても、型システム内のすべての項目を参照できます。

  • Java は、存在するすべてのプラットフォーム (モバイル、Windows、Linux など) で実行する必要があり、各プラットフォームで実行する膨大な量のコードを作成することが使命でした。したがって、Java はネイティブを作成しました。そうすれば、すべてのオブジェクトが、JVM が理解して実行できるネイティブ オブジェクトとして登録されます。JVM は C++ で記述されていることを忘れないでください (実行されるプラットフォームに関係なく)。

  • ガベージ コレクションの場合、オブジェクトが不要な場合、JVM によって finalize メソッドが呼び出されます。
于 2012-09-05T12:48:26.913 に答える
1

通常Object、異なるタイプまたは不明なタイプの要素のコレクションを処理する場合にのみ使用する必要があります。通常、この後にinstanceofand 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)

TJava 5 以降Collectionは汎用であるため、戻ります。

ObjectJava にジェネリックがないという理由だけで、過去に多くの API が返されたことがポイントです。現在、ほとんどの場合、ジェネリックを使用する必要がありますが、すべての API が更新されているわけではありません。今後は、可能な限りオブジェクトの代わりにジェネリックを使用するようにしてください。

于 2012-09-05T12:40:07.477 に答える
1

Object クラスは、変数の特定のクラスが不明な場合に使用されます。オブジェクト クラスは、多くのクラス (Integer、Sting など) の親です。上記の場合、たとえばスピナーは多くの異なるクラス型を持つことができるため、getItemAtPosition()クラスはObjectインスタンスを返します。そのため、一般的なもの (オブジェクト) を返し、それを文字列 (または場合によっては他のクラス) にキャストします。コンテキストでターゲット タイプがわかっている場合。

于 2012-09-05T12:44:13.353 に答える