6

これはおそらくばかげた質問ですが、他の場所では何も見つかりませんでした。ここでは Android の基本について説明します。特に、選択した別のアクティビティを実行するためのインテントを作成しようとすると、チュートリアルでは次のように作成するように指示されます。

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

「DisplayMessageActivity」は、実行中のアクティビティのクラスです。私が得られないのは、「.class」部分は何ですか? 私が理解しているように、そのパラメーターは Class オブジェクトであると想定されています。「クラス」はアクティビティ サブクラスのフィールドですか? または、「DisplayMessageActivity.class」と言うとき、実際の .class ファイルを参照しているのでしょうか (少し奇妙に思えます)。

どんな助けでも大歓迎です!

4

2 に答える 2

5

は通常のフィールド アクセスのように.class見えますが、実際には特殊な言語構造であり、クラス オブジェクトの取得Java チュートリアルで詳しく説明されています。

それは言う、引用:

タイプが使用可能であるがインスタンスがない場合、タイプの名前に「.class」を追加することでクラスを取得できます。これは、プリミティブ型のクラスを取得する最も簡単な方法でもあります。

そして彼らは例を挙げます:

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

Class c = boolean.class;  // correct


私の日常的な Java の使用では、これはあまり使用されていない構造体であり、多くの人はそれに気づいていません。通常、クラスのインスタンスではなく一般的なクラスを指定するときに、ジェネリックなどで使用されます。

これが役立つことを願っています。:)

于 2012-10-13T04:52:09.120 に答える
4

私が得られないのは、「。class」の部分は何ですか?そのパラメータは、私が理解しているように、Classオブジェクトであると想定されています。

それは正しいです。

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

「クラス」は私のアクティビティサブクラスのフィールドですか?

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

または、「DisplayMessageActivity.class」と言うとき、実際の.classファイルを参照していますか?

「.class」ファイルではなく、Class オブジェクトを参照しています。

于 2012-10-13T04:56:26.903 に答える