首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将泛型类型转换为字符串

如何将泛型类型转换为字符串
EN

Stack Overflow用户
提问于 2019-04-21 17:40:54
回答 1查看 3K关注 0票数 1

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

我尝试过使用toString()函数和字符串构造函数,但似乎都不起作用!

代码语言:javascript
运行
复制
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());
        }

    }

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

代码语言:javascript
运行
复制
java: incompatible types: T cannot be converted to java.lang.String

代码语言:javascript
运行
复制
ava: incompatible types: java.lang.String cannot be converted to T
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-21 17:59:52

声明泛型类型T以扩展NumberString不扩展Number。这就是你问题的根源。传入参数ab扩展number,因此可能不是String类型,或者T泛型类型不能扩展Number

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55781604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档