亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JAVA PROGRAMMING: Linkedlist question

JAVA PROGRAMMING: Linkedlist question

陪伴而非守候 2022-07-06 18:50:49
你能解釋一下如何public default boolean addAll(Collection<? extends E> c)具體來說(Collection<? extends E> c)和(Collection<?> c) 作品?另外,你能解釋一下這是什么意思:public default <T> T[] toArray(T[] array)
查看完整描述

2 回答

?
牛魔王的故事

TA貢獻1830條經驗 獲得超3個贊

(Collection<T extends E> c), T 和 ? 可以相同,尤其是如果?是這樣使用的(Collection <? extends E) c)。此處違反了通配符(Collection<? Extends E>)的使用,因為現在這是針對特定對象層次結構而不是針對所有對象類型

通配符不應僅限于特定的對象類型。

但是你需要指定T的類型,基本上T必須是某個對象層次結構的一個實例。

通配符可以是任何類型。

public default <T> T[] toArray(T[] array)這是哪里用的?與 T 相同,因為沒有定義 T 的類型,因為在命名或指定類型時不能使用任何特殊字符,所以可以用 T 代替?。這是一個接口方法,有人必須實現具有此方法的接口并提供 T,并且 T 可以是 aLinkedList或 any Object。


查看完整回答
反對 回復 2022-07-06
?
至尊寶的傳說

TA貢獻1789條經驗 獲得超10個贊

public default boolean addAll(Collection<? extends E> c)

假設你有class A和class B extends A。然后List<A>.addAll會做類似的事情:


void addAll(Set<B> bs) {

    for (A a : bs) {

        add(a);

    }

}

public default <T> T[] toArray(T[] array)

當然default允許有一個在接口中實現的方法。


要將 a 轉換List<T>為數組T[]存在一個問題:在運行時 java 的類型擦除意味著只有一個對象列表。為了接收數組元素的正確類,設計從


List<C>

C[] toArray()    // NOT possible, 


<T> T[] toArray(T[] sample)

如果參數(sample此處)具有正確的大小,則采用該數組,否則創建一個新數組。


List<String> list = ... // At runtime simply a List of Object.


String[] array = list.toArray(new String[list.size()]); // Created array taken.

String[] array = list.toArray(new String[0]); // New array created.

現在人們可能會認為第一個版本更優化,最好。事實上,人們經常提到使用更間接的形式。


然而,它向我展示了第二個版本更快。它使用其他字節碼數組構造。


查看完整回答
反對 回復 2022-07-06
  • 2 回答
  • 0 關注
  • 110 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號