在运行时初始化通用数据结构?

时间:2014-10-03 20:17:24

标签: java generics

我已经实现了一个通用数据结构,它包含可比较的对象(整数,浮点数,字符串等)。签名看起来像

public class MyStruct<T extends Comparable<T>> 

在运行时,我会看到一个字符串输入,可以表示任何可比较的数据类型。

如何根据输入字符串表示的任何类型实例化数据结构?或者我应该更改数据结构以适应这种情况吗?

因此,如果输入是&#34; 4&#34;,我想用

实例化
MyStruct<Integer> struct = new Struct<Integer>();

如果输入是&#34; 4.0&#34;,

MyStruct<Float> struct = new Struct<Float>();

以支持所有类似的类型。

1 个答案:

答案 0 :(得分:1)

在运行时,MyStruct<Integer>MyStruct<Float>之间没有区别;类型信息仅在编译时可用,之后由于type erasure而被删除。

如果您愿意,您可以在类中实现方法来手动执行类型转换和检查,但我不相信有一种方法可以使您的类适应于使用在运行时推断的类型。