我想缩短此代码的长度:
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?