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

时间:2015-01-13 18:59:41

标签: java oop reflection

例如: 让我们说有一个类Dog,一个子类Dalmatian和Dog类有私有变量 字符串名称,品种; 现在我在主要说:

Dog spot = new Dalamatian();

并自动获取名称=" spot"和品种="达尔马提亚"。

1 个答案:

答案 0 :(得分:2)

很容易获得该品种:

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");