【发布时间】:2017-09-16 11:05:35
【问题描述】:
package1.MyClass 的实例是一个对象,它具有身份、属性、行为并与其他实例(对象)保持关联(组合/聚合)。
说,package1.MySubClass 扩展了 package1.MyClass
以下代码使用Class元编程抽象,
Class<?> myClassInstance = Class.forName("package1.MyClass");
提供有关package1.MyClass 类的信息。
1) package1.MyClass 是一个对象吗?
2) 如果是,package1.MyClassobject 是否有它自己的身份、属性、行为并持有关于与package1.MySubClassobject 的泛化关系的信息?
3) 为什么 Java 将元编程称为反射?
【问题讨论】:
-
它是一个对象,不清楚 2 到底是什么,而 3 主要是因为它不是元编程。不过,您想看看How to Ask 和help center。
-
@pvg 现在问题 2 有意义吗?
-
@pvg here 它说,反射是元编程的子集
-
它没有这么说。它说明了一些类似于反射的东西,它是一种对某些类型的元编程实现有用的工具。 Java 不调用“元编程”反射,因为反射并不意味着“元编程”,它意味着别的东西。 C++ 元编程或 lisp 宏等系统并不严格依赖运行时反射。
-
@overexchange 我是说 Java 中所有不是原始的(原始短列表)的东西都是一个对象,所以如果你指的是不是原始的东西,它就是一个东西。您可以通过查看文档或使用调试器检查它来准确了解它。
标签: java reflection metaprogramming