1

我是一个新手,我已经涵盖了 Java 的所有基本概念。到目前为止,我遇到过使用 Object 类和使用“.class”语法创建对象引用的示例。

我试图寻找关于如何使用这两个概念的解释,但我没有得到清晰的画面。

我所看到的是,是的,我们可以创建对 Object 的引用。但是这个参考是如何/用于什么的?

对于.class语法,我一直看到“反射”这个词,但是当我在像existingclass.class这样的现有类上使用这种语法时,真正发生了什么?是否只是在 < existingclass >中使用方法/数据而不创建实例/对象?

示例将不胜感激。

4

2 回答 2

8
  1. 对的引用Object可以指向任何对象;它可以在不同时间指向不同种类的对象。当您想要传入任何类型的对象时,它是一个很好的方法参数类型,当您希望能够返回任何类型的对象时,它是一个很好的返回类型。

  2. 符号ClassName返回一个代表ClassName.class的实例。对于 Java 虚拟机中加载的每个类,都有一个对象来表示该类。至于它有什么用——它只适用于相当高级的、神奇的东西,比如编写询问类有哪些方法的代码,或者当你只有用户输入的类的名称时创建一个类的实例或从文件中读取。java.lang.Classjava.lang.Class

    此外,当您了解线程时,您会发现类对象对于静态方法具有特殊用途;你现在不必担心。作为初级 Java 程序员,您无需使用它;不过,总有一天,你可能会。

于 2012-08-15T01:48:11.790 回答
1

这个词Java有三个意思:

  1. 一种编程语言;
  2. 虚拟机(JVM)规范;
  3. 以及 Java 应用程序的运行时环境。

从编程语言的角度来看,它定义了语法和句法。它提供了有关如何使用该语言的说明。要了解.class,您最好参考 JVM 规范(是的,它已经超出了语言范围)。

粗略地说,您的程序被彻底编译成.class字节码格式的文件,包括固有的超类名称、实现的接口以及最重要的编译代码等。

运行程序时,所有.class有助于其完成的 s 都应加载到 JVM 中。IIRC,类在您的程序第一次引用它们时加载,而不是在程序运行时加载,例如在导入指令中或通过.class代码中的直接引用。

So to answer your question, the .class syntax is not only used to refer class information, e.g. method definitions or static variables, but also enforce JVM load specific class. (If you are familiar with JDBC or have a chance play with it in the future, you will find .class syntax can be used to enforce loading a database driver)

于 2012-08-15T02:15:07.573 回答