我希望将 char
数组转换为 Set
字符。
从逻辑上讲,如果我写出类似 How to convert an Array to a Set in Java 的内容而不是使用它会工作的内置功能。但是,将内置函数与泛型一起使用则不会。
TreeSet<Character> characterSet = Sets.newTreeSet();
String myString = "string";
Character [] characterArray = {'s','t','r','i','n','g'};
Collections.addAll(characterSet,characterArray); // This works
Collections.addAll(characterSet,myString.toCharArray()); // This Does not
为什么它不将 char
数组转换为 characters
?
作为对答案的跟进。 (顺便说一句,谢谢)我认为我的意思的一个简单示例是为什么第一行隐式转换但第二行不转换?
Character [] characterArray = {'s','t','r','i','n','g'}; // works
Character [] characterArray2 = myString.toCharArray(); // does not work
我的理解是右手边都使character[]
变量
最佳答案
因为 myString.toCharArray()
将返回 char[]
而不是 Character[]
。您可以通过这个简单的测试来验证它:
char[] a = { 'a' };
Character[] b = { 'b' };
a = b; //doesn't work, because char[] is not a Character[]
不过 Character[] characterArray = {'s','t','r','i','n','g'};
符合 Collections .addAll(...)
,因为在初始化数组时,每个值都会从 char
自动装箱到 Character
。
关于java - 为什么这里不进行隐式转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29796517/