簡體   English   中英

為什么隱式鑄造不會發生在這里?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM