元编程-类是Java中的对象吗?
元编程-类是Java中的对象吗?,java,reflection,metaprogramming,Java,Reflection,Metaprogramming,package1.MyClass的实例是一个对象,它具有标识、属性、行为并与其他实例(对象)保持关联(组合/聚合) 比如说,package1.MySubClassextendspackage1.MyClass 下面的代码使用了类元编程抽象 Class<?> myClassInstance = Class.forName("package1.MyClass"); Class myClassInstance=Class.forName(“package1.MyClass”); 它提
package1.MyClass
的实例是一个对象,它具有标识、属性、行为并与其他实例(对象)保持关联(组合/聚合)
比如说,package1.MySubClass
extendspackage1.MyClass
下面的代码使用了
类
元编程抽象
Class<?> myClassInstance = Class.forName("package1.MyClass");
Class myClassInstance=Class.forName(“package1.MyClass”);
它提供了有关package1.MyClass
class的信息
1)
package1.MyClass
是对象吗
2) 如果是,则package1.MyClass
对象是否具有自己的标识、属性和行为,并保存有关与package1.MySubClass
对象的泛化关系的信息
3) 为什么Java将元编程称为反射?的javadoc表明它源于对象,因此它是一个对象。您可以在类对象上调用toString()
,hashCode()
等。此外,您还可以调用类
-特定方法来标识特定属性。查看javadoc了解所有可用信息
请注意,这不是一个特定于Java的术语。元编程这个术语在Java世界中没有广泛使用。它是一个对象,不清楚2到底是什么,而3主要是因为它不是元编程。您想看一看,但@pvg问题2现在有意义了吗?@pvg它说,反射是元编程的子集,但它没有这么说。它说,反射是一种对某些元编程实现有用的工具。Java不调用“元编程”反射,因为反射并不意味着“元编程”,它意味着其他东西。像C++元编程或LISP宏这样的系统并不严格依赖于运行时的反射。@ Exchange和我所说的不是java中的原始元素(短列表)是一个对象,所以如果你指的不是原始的东西,它就是一个对象。通过查看文档或使用调试器检查文档,您可以确切地看到它是什么。术语还是功能,它说反射是元编程的子集,以一种语言不可知的方式,我没有投反对票,但我不同意Java中没有使用这个术语。我要说的是,使用这个词并不像在语言中那样普遍,这使它变得更容易。我对它投了反对票,作为一个回答,它是懒惰的,模糊地误导/不准确/不完整。更重要的是,这个问题本身不够好,不能脱离主题,我们的努力最好是帮助海报缩小范围和/或重新编排,而不是急于给出同样糟糕的答案。我不同意(并希望在否决票的同时发表评论)。它具体回答了第1点和第2点,我建议在Java社区中没有广泛使用“元编程”这个短语。我的大多数对话都围绕着“反射”这个词(和API)展开,你在反对票上的评论真的不值得,所以我觉得这是一件奇怪的事情,但没关系。我认为javadoc的论点似乎是非基本的和倒退的。问题不在于类
是否是对象
类型的子类型。2根本没有提到,3是模糊的,有点错误,同样,也没有提到3本身提出的问题。因此,这是对一个糟糕问题的糟糕回答,对改善这个糟糕问题几乎没有什么作用,我认为这是更大的罪过。在我看来,无论多么善意,这只会让网站变得更糟。