【发布时间】:2015-09-28 02:53:56
【问题描述】:
正如标题所说,我想知道是否可以通过编程方式了解枚举项用于初始化的构造函数,我认为如果有这样的机制,它应该可以通过使用反射来访问,但我有更具体地说,找不到类似的东西:
我有什么
enum AnEnum {
E1(1),
E1(1, 2);
int v;
AnEnum(int p1) {
v = p1;
}
AnEnum(int p1, int p2) {
v = p1 + p2;
}
}
我需要的是一种机制,可以告诉我实例是使用一个参数还是两个参数构造函数初始化的,如果我可以获得用于初始化它的参数,那就更好了。
【问题讨论】:
-
“我需要一个机制来告诉我” 你想怎么被告知?为什么不在你的两个构造函数中使用 print 语句来获取所有信息?
-
问题是我正在编写一个允许我在代码中“自省”的实用程序,比如反编译它,因此在所有情况下我都无法随意访问或修改源代码.所以我可以更好地重新创建代码。
-
对象没有“历史”来告诉你它们是如何组成的——除非你把它添加到类的代码中。 - 这是一个奇怪的要求。你会从这些信息中得到什么?无论过去如何,对象都是您检查时的样子。
-
@laune 正如我在之前的评论中所说,如果我要重新创建代码,最好的办法是确定它是如何编写的。尽管如此,我知道在我的示例中这并不重要,因为我可以将代码重新创建为:
E1(1),E2(3)
标签: java reflection constructor enums initialization