如何缩短这段基于字符串输入返回Java实例的代码长度?
缩短PersonA类代码的几种方案
我来给你几个能缩短这段Java代码的方案,既能保留原有的属性获取功能,还能让代码更简洁:
方案1:兼顾可读性与简洁性
这个方案用Map接口代替具体的HashMap实现(降低耦合),用Class.cast()替代强制转换(更安全,避免unchecked警告),同时优化了代码结构:
public class PersonA { private final Map<String, Object> attrs = new HashMap<>(); public <T extends PersonAItem> T attr(String key, Class<T> type) { return type.cast(attrs.get(key)); } }
方案2:极致压缩(最短代码长度)
如果追求极致短的代码,可以合并代码行、缩短变量名(牺牲一点可读性,但功能完全不变):
public class PersonA { private final Map<String,Object> attrs=new HashMap<>(); public <T extends PersonAItem> T attr(String k,Class<T> t){return t.cast(attrs.get(k));} }
补充:使用示例的小修正
原使用示例里的System.out.printLn是拼写错误,应该是System.out.println(注意是小写的l),修正后的示例:
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!"); }
内容的提问来源于stack exchange,提问作者user7148508
相关产品推荐
相关产品推荐

