Java 有没有办法从对象名和类名初始化变量?(例如使用反射)
例如: 假设有一个类Dog,一个子类Dalmatian,Dog类有私有变量 串名、品种; 现在我主要说:Java 有没有办法从对象名和类名初始化变量?(例如使用反射),java,oop,reflection,Java,Oop,Reflection,例如: 假设有一个类Dog,一个子类Dalmatian,Dog类有私有变量 串名、品种; 现在我主要说: Dog spot = new Dalamatian(); 自动获得name=“spot”和breed=“Dalmatian”。很容易获得品种: public class Dog { private final String name; private final String breed; protected Dog(String name) {
Dog spot = new Dalamatian();
自动获得name=“spot”和breed=“Dalmatian”。很容易获得品种:
public class Dog {
private final String name;
private final String breed;
protected Dog(String name) {
// Default to using the class name
this(name, getClass().getSimpleName());
}
protected Dog(String name, String breed) {
// Allow subclasses to specify an explicit breed
this.name = name;
this.breed = breed;
}
}
我不相信在Java中有任何推断spot
的方法。(假设这是一个字段而不是一个局部变量,可以在C#中使用CallerMemberName
…)
所以基本上你需要
Dog spot = new Dalmation("spot");
谢谢实际上我想写公共的或受保护的,但最终写了私人的,但最后我决定不编辑它。不过如果我也能得到这个“位置”那就太好了。