我的问题是关于转换通用 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。不幸的是,它所做的只是,如果我们如果 Integer = 255,则 String 将为“255”。这不是我想要的,因为将原始 int 转换为 char 会给出正确的 ASCII 代码字符,所以 f.e.强制转换 (char)65 将返回 someChar = 'A'。这正是我想要得到的,除了泛型类型。有什么方法可以达到这个目的?
最佳答案
这里有几个选项。您可以做的一件事是获取整数值,然后转换/打印该值:
(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
>
关于java - 通用整数类型到字符类型的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23617235/