我的问题是关于转换通用Java类型的主题。假设我们有一个类似的Integer ArrayList:
List<Integer> intFileContents = new ArrayList<Integer>(8192);
现在,我想从列表中检索一个Integer,然后将其作为一个字符打印出来,因为ArrayList实际上是从文本文件中读取字符:
while ((fileBuffer = stream.read())!= -1) {
intFileContents.add(fileBuffer);
System.out.print(fileBuffer);
}
如果我使用原始类型,我只是这样投:
char someChar = (char)someInt;
但是,通用类型(Character)intFileContents.get(pos);
是不可能的,因为它们是对象。现在,Integer类中有一个方法:Integer.toString()
,它应该将所谓的Integer作为字符串返回。不幸的是,它只是,如果我们f.e. had和Integer = 255,String为“255”。这不是我想要的,因为将原始int转换为chars会给出正确ASCII码的字符,所以f.e。 cast(char)65会返回someChar ='A'。这正是我想要的,除了Generic类型。实现这个目标的方法是什么?
答案 0 :(得分:1)
这里有一些选择。您可以做的一件事是获取整数值,然后转换/打印:
(char) intFileContents.get(pos).intValue(); // Do something with this
可能更好的选择是立即转换您读入的int值,如下所示:
List<Character> charFileContents = new ArrayList<Character>(8192);
while ((fileBuffer = stream.read())!= -1) {
charFileContents.add((char) fileBuffer); // <-- Do the cast before storing the value
System.out.print(fileBuffer);
}
然后,当你去打印角色时,它已经是正确的类型了。请注意,这仅适用于一种特定的编码(不记得哪种编码),因此如果您需要其他编码,则必须使用InputStreamReader
而不是普通InputStream
< / p>