【发布时间】:2019-12-03 08:13:07
【问题描述】:
我的目标是转换为泛型类型,即 String 包含的信息,即不同 Java 类型之间的信息变量。例如:
String s = "10";
E e1 = (E)s;
String s = "abc";
E e2 = (E)s;
在本例中,e1 将是一个整数,而 e2 仍然是字符串。几个小时以来我一直在寻找解决方案,我发现最好的是solution with reflection
但是,如果它包含其他类型的信息,它会单独转换为字符串,从而导致代码的其他部分出现故障。
【问题讨论】:
-
A
String只是每个字符串。您只能将其转换为String、Object或String实现的接口之一。如果要将其转换为Integer,则需要使用方法或构造函数,例如new Integer(s)。 -
泛型不是这样工作的。泛型几乎 单独是一个编译时类型检查系统(加上运行时的一点点转换)。并且
String不能转换为 int,它必须被解析。 -
@ErwinBolwidt 不要使用
Integer构造函数,因为它在较新的 Java 版本中已被弃用。请改用valueOf。 -
我认为这实际上是一个有趣的想法,但是您对此有何期待:“仅 10 欧元”?如果您在某处 (EUR) 有一些 Enum of that kind,您可以拥有它的字符串、一个数字 (10)、2 个字符串(“EUR”、“only”)和一个 ISO 货币代码。所以不可能自动解码。
-
@gurioso 我使用的字符串代表每个字符串的一种数据类型。如果给定这种情况,则 String 的不同“类型”之前是分开的