【发布时间】:2021-05-19 17:32:23
【问题描述】:
在运行时使用反射查询类的构造函数信息时。
public class amongUs {
...
...
...
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.PARAMETER, ElementType.METHOD})
@interface Message {
}
public enum Colors {RED , YELLOW , GREEN ,BLACK , WHITE, BLUE, CYAN, PURPLE, VELVET, BROWN, ORANGE
};
public class Player {
}
public class pla extends Player {
String color;
String message = "im not sus";
@Inject
public pla(@Message Integer x,@Message String wut) {
color = (Colors.values()[x]).name();
message=wut;
}
}
...
...
}
但是,当我查看“pla”的构造函数时,它显示它有 3 个参数。
为什么会发生,我该如何解决?
【问题讨论】:
-
这是一个内部类。这意味着该类的任何实例都属于外部类
amongUs的一个元素。您只能使用外部类的实例来实例化它。显然,您的调试器将其显示为构造函数参数。如果这不是您想要的,请不要使用内部类。使用顶级类或静态嵌套类。还有Player。 -
所以我应该将 pla 设为静态?
-
也许吧。我不知道你为什么要使用内部类。你的代码没有说清楚。
-
好的,谢谢你的回答
标签: java reflection constructor gdb inject