将字符串转换为通用类型

昵称:

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

尝试编译:

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

导致编译错误:

“找到:java.lang.String必需:T”

安德烈·道尔(Andrzej Doyle):

你需要有某种方式创建的实例T的基础上,String(或等价,转换StringT)。

在这种情况下,投射功能并没有实现您可能认为的功能。强制类型转换只是告诉类型系统,“我知道您对该对象是哪个类有不同的,不太具体的想法,但是我告诉您它是一个类Foo。继续,检查其运行时类,看看我是对的!”。但是,在这种情况下,String不一定是a T,这就是强制转换失败的原因。转换不会转换,只会消除歧义

特别TInteger在这种情况下,您需要通过调用 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章