gpt4 book ai didi

Java泛型返回类型(具有相似的输入参数)

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

这个问题接近this , 但有很大的不同。

五月要求:

(1) 我想生成一个具有通用返回值的 Java 函数。

(2) 输入参数列表总是相同的。 (与 link above 不同)。

(3) 函数应该知道返回参数的类型。

我的尝试:

public  <T> T getProperty(String name)
{
T value;
try {
if (T instanceof String) {value = (T) getStringProperty(name);}
if (T instanceof Long) {value = (T) getLongProperty(name);}
if (T instanceof Boolean) {value = (T) getBooleanProperty(name);}
} catch (Exception e) {
LOGGER.error("error at getProperty", e);

}
return value;
}

这是行不通的,因为没有生成 T 的实例。尝试 T value = new T(); 也失败了。

有什么快速修复方法吗?还是不推荐这种方法?

最佳答案

由于type erasure,你想做的事是不可能的运行时的泛型。换句话说 <T>将被删除到 Object在你的情况下。

你可以像这样传递一个类对象来描述返回类型:

public  <T> T getProperty(Class<T> returnType,String name){
if (returnType == String.class)
return (T)stringProperty(name);
[...]
}

关于Java泛型返回类型(具有相似的输入参数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37429951/

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