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

标签 java string generics

我正在编写一个函数,该函数使用通用参数并将它们转换为特定的数据类型,添加它们并返回附加值。我已经对整数和 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/

相关文章:

c# - 如何将委托(delegate)存储在列表中

java - 将对象视为另一个对象

java - Swing 组件的代码说明

ios - 苹果 swift : Type Casting Generics

javascript - 如何突出显示字符串中的文本?

php - 如何从 24 个字符的字符串中获取唯一的 8 个字符的字符串?

java - 泛型类,了解泛型参数

java - 从菜单 Activity 调用 GPS Activity

java - 使用java中的比较器对二维数组的每一列进行排序

sql-server - 在 T-SQL 中指定给定日期的正确方法