簡體   English   中英

Java有界類型參數

[英]Java bounded type parameters

1.我以為Java中的Interfaces沒有實現,所以如何在這里使用我的compareTo()?

2.據我所知, extends關鍵字可以向接口添加新方法,以便以后實現。 所以我不明白我在這里到底是什么/如何擴展?

謝謝

public class Compare {

    // simple comparison operator < > ... works only on primitives
    // that's why we need the Comparable
    public static <T extends Comparable<T>> int countGreaterThan(T[] anArray, T elem) {
        int count = 0;

        for (T e : anArray)
            if (e.compareTo(elem) > 0)
                ++count;

        return count;
    }
}
  1. Java中的接口沒有實現,但是您不能創建接口的實例。 (嘗試一下-在代碼中包含new List()時會發生什么?)您只能創建實現該接口的類的實例,並且該類是實現接口的方法所必需的。

  2. 在這種情況下,您根本不會擴展任何內容。 您僅表示“此方法只能用於擴展/實現Comparable<T>接口的類T ”。

實際上,從Java 8開始,接口可以具有(默認,部分)實現,但這是一個問題。 令人困惑的是,關鍵字extends有兩種用法:

  1. 擴展類的功能 ,並且如您正確地說的那樣,通過擴展Interface類層次結構來擴展類。
  2. 對於泛型類, 有界類型參數用於定義類型參數范圍 ,例如List<T extends Comparable> 當他們引入這個關鍵字時,他們決定使用相同的關鍵字,大概是為了強調適用於此泛型T的類本身必須如何擴展 Comparable (例如)。 由於Java中的類和接口共享相同的層次結構,因此在這里使用哪個並不重要(盡管建議使用接口)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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