将字符串转换为泛型类型

2024-03-04

我的程序必须从文件接收输入,输入可以是字符、整数或字符。这样,我必须根据文件中给出的元素创建一棵树。输入的类型在文件的开头给出。我的问题是我的 insertNode 函数接收通用类型 T 的元素,但文件被读取为字符串。如何将字符串转换为 T 类型?

尝试编译:

String element = br.readLine();  
T elem = (T)element; 

结果编译错误:

“发现:java.lang.String 需要: ”


你需要有某种方式creating的一个实例T,基于String(或者等效地,转换String to a T).

在这种情况下,转换并没有达到您可能认为的效果。强制转换所做的就是告诉类型系统,“我知道您对这个对象是什么类有一个不同的、不太具体的想法,但我告诉您它是一个Foo。继续,检查它的运行时类,看看我是对的!”。但是,在这种情况下,String 不一定是T,这就是演员失败的原因。转换并不能转化,它只是消除歧义.

特别是,如果T恰好是Integer在这种情况下,你需要convert通过调用将字符串转换为整数Integer.parseInt(element)。但是,您复制的代码部分不知道是什么T将在调用它时发生,并且本身无法执行这些转换。因此,您需要传入一些参数化的辅助对象来为您执行转换,如下所示:

interface Transformer<I, O> {
    O transform(I input);
}

...

public void yourMethod(BufferedReader br, Transformer<String, T> transformer) {

    String element = br.readLine();
    T elem = transformer.transform(element);

    // Do what you want with your new T
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将字符串转换为泛型类型 的相关文章

随机推荐