gpt4 book ai didi

java - 如何将泛型类型转换为String

转载 作者:行者123 更新时间:2023-12-02 01:32:49 25 4
gpt4 key购买 nike

我正在编写一个函数,该函数使用通用参数并将它们转换为特定的数据类型,添加它们并返回附加值。我已经对整数和 double 执行了此操作,但无法对字符串执行相同的操作

我尝试过使用 toString() 函数以及 String 构造函数,但似乎没有任何效果!

public static <T extends Number> T add(T a, T b) {
if (a instanceof Integer) {
return (T) Integer.valueOf(a.intValue() + b.intValue());
} else if (a instanceof Double) {
return (T) Double.valueOf(b.doubleValue() + b.doubleValue());
} else if (a instanceof String) {
return (T) String.valueOf(a.toString() + b.toString());
}

}

我希望它应该返回泛型类型参数,但它会抛出几个编译时错误:

java: incompatible types: T cannot be converted to java.lang.String

ava: incompatible types: java.lang.String cannot be converted to T

最佳答案

您的通用类型T被声明为扩展NumberString 不扩展Number。这就是你问题的根源。您的传入参数 ab 扩展数字,因此可能不是 String 类型或您的 T 泛型类型不能扩展 Number

另一个解决方案是让您的方法保持原样,而不是处理 String 类型,并添加另一个接收 2 个 String 参数的方法。但是,请注意,添加 2 个字符串只是将它们连接起来,因此“2”+“4”将为您提供“24”,这可能不是您想要/期望的。如果您期望表示数值的字符串,则需要编写自己的代码来将 String 参数解析为 IntegerLong 或其他实现Number接口(interface)然后将它们相加

关于java - 如何将泛型类型转换为String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55781604/

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