Java 有没有办法从对象名和类名初始化变量?(例如使用反射)

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,一个子类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) {
        // 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");

谢谢实际上我想写公共的或受保护的,但最终写了私人的,但最后我决定不编辑它。不过如果我也能得到这个“位置”那就太好了。