2012-10-13 7 views
6

これは、おそらく、愚かな質問ですが、私は他の場所で、それには何も見つからなかっました。私は、Androidの基本をつもりだ、と私は私の選択の別のアクティビティを実行するために、具体的意図を作成しようとすると、チュートリアルでは、このようにそれを構築するために私に語った:に、この「.classファイル」構文は何ですか?

Intent intent = new Intent(this, DisplayMessageActivity.class); 

「DisplayMessageActivity」はどこに私が動かしている活動のクラス。私が得ないのは、 ".class"パートは何ですか?そのパラメータは、私が理解しているように、Classオブジェクトであると考えられています。 "class"は私のActivityサブクラスのフィールドですか?私は「DisplayMessageActivity.class」と言うとき、または、私は(それは少し奇妙なようだ)実際の.classファイルを参照するのですか?

ご協力いただきましてありがとうございます。

答えて

5

.classは通常のフィールドアクセスのように見えますが、これは実際には特殊な言語構造であり、Retrieving Class Objects Javaチュートリアルで非常によく説明されています。

それがquote、言う:

タイプが利用可能ですが、タイプの名前に「.classファイル」を追加することによって、クラスを得ることが可能であるインスタンスが存在しない場合。これは、プリミティブ型のクラスを取得する最も簡単な方法です。

そして、彼らは例与える:ジャワの日の使用に私の一日で

boolean b; 
Class c = b.getClass(); // compile-time error 

Class c = boolean.class; // correct 


を、これは非常用いた構築物ではなく、多くはそれに気づいていません。一般的にクラスをインスタンス化するのではなく、クラスを指定するときにジェネリックなどで使用されます。

こちらがお役に立てば幸いです。 :)

4

".class"の部分は何ですか?そのパラメータは、私が理解しているように、Classオブジェクトであると考えられています。

これは間違いありません。

SomeClass.classは、実際には「SomeClassタイプに対応するClassオブジェクトを教えてください」という意味のJava構文です。また、クラス名だけでなく、どのタイプでも使用できることに注意してください。 「クラスは、」私の活動のサブクラスのフィールド

ですか?

号は、それはフィールドではありません。あなたはそれを静的フィールドに類似していると考えることができますが、実際にはそれはありません。 (ただ、someArray.length本当に好き配列オブジェクトのフィールドではありません。)

または私は「DisplayMessageActivity.class」を言うとき、私はそれが参照している実際の.classファイル

を参照していますClassオブジェクト ...ない "の.class" ファイル。

関連する問題