gpt4 book ai didi

java - Java 中的泛型参数类型和返回类型

转载 作者:行者123 更新时间:2023-11-29 04:45:37 25 4
gpt4 key购买 nike

我正在尝试创建一个 Java 方法,它接受一个 Object 类型和它应该转换成的数据类型。

例如,如果我应该能够根据需要将值 1 作为 Int 或 Double 返回。我正在使用 Class 将数据类型作为参数传递。

问题:如何使方法通用以接受基于输入参数的返回类型?

下面的代码只是一个例子,它可能在语法上不正确,只是为了解释我的问题。

public class JavaTest {

public static void main(String[] args) {
getValue(1,int.class);
getValue(1,double.class);
getValue("adf",String.class);
}

public static <E> void getValue(Object obj,Class<?> type) {
if (type == String.class) {
// return string value
}else if (type == int.class) {
//return Integer.parseInt(obj);
}else if (type == double.class) {
//return Double.parseDouble(obj);
}
}
}

最佳答案

How can I make the method generic to accept return type based on the input parameter?

类型参数可用于指定方法的返回类型,您可以通过该参数的类型参数将其与 Class 参数相关联:

public static <E> E getValue(Object obj, Class<E> type) {

您还需要使用 Class.cast() 来满足编译器该方法返回正确类型的要求。 (您也可以使用普通的强制转换,但这会受到类型安全警告的约束。)例如:

    // ...
} else if (type == Integer.class) {
return type.cast(Integer.valueOf(obj.toString()));
}

另请注意,您不能像您的代码所建议的那样,通过这种方式直接实现到基本类型的转换。您必须改为转换为它们的包装器类。换句话说,您不能使用 int.classdouble.classetc。您必须改为使用 Integer.classDouble.class 等。

关于java - Java 中的泛型参数类型和返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37328707/

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