6

这也许是一个愚蠢的问题,但我在其他地方什么也没找到。我正在学习 Android 的基础知识,当我尝试创建一个专门用于运行我选择的另一个活动的意图时,本教程告诉我以这种方式构建它:

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

其中“DisplayMessageActivity”是我正在运行的活动的类。我不明白的是,“.class”部分是什么?据我了解,该参数应该是一个 Class 对象。“类”是我的 Activity 子类的一个字段吗?或者当我说“DisplayMessageActivity.class”时,我指的是一个实际的 .class 文件(这似乎有点奇怪)?

任何帮助表示赞赏!

4

2 回答 2

5

虽然看起来是一个普通的字段访问,但它实际上是一种特殊的语言结构,这在Retrieving Class Objects Java 教程.class中得到了很好的解释。

它说,引用:

如果类型可用但没有实例,则可以通过将“.class”附加到类型名称来获得类。这也是获取原始类型的 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 语法,意思是“给我Class对应SomeClass类型的对象”。请注意,您可以在任何类型上使用它……而不仅仅是类名。

“类”是我的 Activity 子类的一个字段吗?

不,它不是一个字段。您可以将其视为类似于静态字段,但实际上并非如此。(就像someArray.length不是真正的数组对象的字段。)

或者当我说“DisplayMessageActivity.class”时,我指的是实际的 .class 文件

它指的是一个Class 对象......而不是“.class”文件。

于 2012-10-13T04:56:26.903 回答