我之前曾经读到过Java类是Class
类的实例。但现在,我的计算机科学老师说Java类不是对象。
哪一个是正确的?
Java类不是对象。
然而,每个Java类都有一个描述它的Class
类的实例。
这些实例是对象。
Class
的实例与使用class
关键字创建的类不是同一件事。明白了。 - itdoesntworkString.class
是什么的文字表示? - Matt BallJava类不是对象,而是一种抽象。
但是,每个Java类都有一个相应的java.lang.Class
类实例来表示它。该表示是一个对象。但是你不应该将这种表示误认为是实际的东西。
这种关系有点类似于音乐和乐谱之间的关系。虽然书面符号代表音乐,但它本身并不是音乐。
然而,在实践中这种差异很少有影响,只要你知道在使用java.lang.Class
对象时需要注意什么就可以了。
类(您的代码,甚至是 .class 文件中编译后的代码)不是对象。只有在实例化该类之后,您才拥有一个对象。
例如,Java.lang.String
是一个类。 String s = new String("Hello world");
定义了一个 String 类型的对象。这可能是您的教授所做出的区分。
如果一个类能够理解方法并具有自己的属性(使用“静态”),那为什么不将它们视为对象呢?对象就是这样做的。
但是这不是要向学生提出的问题,因为这只会让他们感到困惑。我认为,如果你已经掌握了类和对象的概念,那么你可以将类看作一种对象。
java.lang.Class
都是从java.lang.Object
继承而来。
SomeClass
的多个实例:只需创建一个新的ClassLoader
并重新加载“SomeClass”,您将得到相同编译时类的不同实例,可能具有不同的方法实现。 - Rogério