我的程序必须从文件中接收输入,输入可以是字符,整数或字符。为此,我必须根据文件中给定的元素创建一个树。输入的类型在文件的开头给出。我的问题是我的insertNode函数将元素接收为通用类型T,但文件读取为字符串。如何将字符串转换为T类型?
尝试编译:
String element = br.readLine();
T elem = (T)element;
导致编译错误:
“找到:java.lang.String必需:T”
你需要有某种方式创建的实例T
的基础上,String
(或等价,转换String
到T
)。
在这种情况下,投射功能并没有实现您可能认为的功能。强制类型转换只是告诉类型系统,“我知道您对该对象是哪个类有不同的,不太具体的想法,但是我告诉您它是一个类Foo
。继续,检查其运行时类,看看我是对的!”。但是,在这种情况下,String不一定是a T
,这就是强制转换失败的原因。转换不会转换,只会消除歧义。
特别T
是Integer
在这种情况下,您需要通过调用将 String 转换为Integer 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
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句