作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个函数,该函数使用通用参数并将它们转换为特定的数据类型,添加它们并返回附加值。我已经对整数和 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
被声明为扩展Number
。 String
不扩展Number
。这就是你问题的根源。您的传入参数 a
和 b
扩展数字,因此可能不是 String
类型或您的 T
泛型类型不能扩展 Number
。
另一个解决方案是让您的方法保持原样,而不是处理 String
类型,并添加另一个接收 2 个 String
参数的方法。但是,请注意,添加 2 个字符串只是将它们连接起来,因此“2”+“4”将为您提供“24”,这可能不是您想要/期望的。如果您期望表示数值的字符串,则需要编写自己的代码来将 String
参数解析为 Integer
或 Long
或其他实现Number
接口(interface)然后将它们相加
关于java - 如何将泛型类型转换为String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55781604/
我是一名优秀的程序员,十分优秀!