gpt4 book ai didi

java - 在不创建新实例的情况下推断泛型类型

转载 作者:行者123 更新时间:2023-11-30 06:44:16 26 4
gpt4 key购买 nike

private HashMap<Object, Object> attribute = new HashMap<>();

public <T> T attributeAs(Object key, T as){
Object ans = attribute.get(key);
return ans == null ? null : (T) ans;
}

方法:

ModuleM m = (ModuleM) player.attribute.get("module_m");

除了那个方法,有没有什么方法可以在不创建新类实例的情况下返回一个类型,即:

ModuleM m = person.attributeAs("module_m", new ModuleM());

因为在使用上面的方法时,您正在创建一个全新的实例,如果 ModuleM 是一个包含大量数据的庞大类,那么这会影响处理能力/速度吗?

(记住我想要 ModuleM 而不是 Class )

最佳答案

您不需要发送实例:

public <T> T attributeAs(Object key){
Object ans = attribute.get(key);
return (T) ans;
}

编译器将根据调用时的赋值推断类型:

ModuleM attribute = person.attributeAs("module_m");

当然,您可能会遇到类转换异常,因为您的 map 支持 <Object, Object>条目,在实际实例与具体目标类型不兼容的情况下。那是因为这样的调用:

String attribute = person.attributeAs("lastName") //probably OK

String attribute = person.attributeAs("module_m") //probably problematic

也是合法的,但可能不兼容。

关于java - 在不创建新实例的情况下推断泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50861891/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com