通过字符串输入

时间:2018-03-26 02:46:06

标签: java class object syntax instanceof

我想缩短此代码的长度:

public class PersonA {
    private HashMap<String, Object> attrs = new HashMap<>();
    public <T extends PersonAItem> T attr(String key, Class<T> var) {
         return (T) attrs.get(key);
    }
}

用法:

public static void main (String[] args){
    PersonA personA= new PersonA();
    String computerName = personA.attr("computer", Computer.class).getComputerName();

    System.out.printLn("person A has a " + computerName + " computer!");
}

方法

getComputerName();

显然是计算机类唯一的,因此只有在attr方法将对象作为instanceof Computer.class返回时才能调用。问题是要使用attr方法,我必须输入字符串键和类实例。我知道我可以这样存储:

private HashMap<Class <? extends PersonAItem>, Object> attrs = new HashMap<>();

public <T extends PersonAItem> T attr(Class<T> var) {
         return (T) attrs.get(var);
    }

我只需要输入类实例,但有没有办法只能输入一个字符串来返回对象instanceof Computer.class而不仅仅是Object?

显然是这样的:

public Object attr(String key) {
     if (key.equals("computer")
         return (Computer) attrs.get(key);
     return attrs.get(key);
}

将始终返回Object而从不返回Computer.class

有什么方法可以只输入一个字符串来返回对象instanceof Computer.class而不仅仅是Object?

0 个答案:

没有答案