[英]Why doesn't implicit casting happen here?
我正在尋找將char
數組轉換為一Set
字符。
從邏輯上講,如果我寫出如何將數組轉換為Java中的Set而不是使用內置函數,它將起作用。 但是,使用帶有泛型的內置函數則不然。
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()
將返回不是Character[]
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
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.