我試圖使用<E extends comparable <E>>
創建一個接口ISortableStack
,但我無法繼續前進。以下是做什麼的?Java - 遞歸泛型類型定義
<E extends Comparable<E>>
我試過this,但它沒有幫助。
我試圖使用<E extends comparable <E>>
創建一個接口ISortableStack
,但我無法繼續前進。以下是做什麼的?Java - 遞歸泛型類型定義
<E extends Comparable<E>>
我試過this,但它沒有幫助。
<E extends Comparable<E>>
意味着E
必須是一個知道如何比較本身,因此,遞歸類型定義一個類型。
public class Comparables {
static class User implements Comparable<User> {
@Override
public int compareTo(User user) {
return 0;
}
}
/**
* This class cannot be used with Collections.sort because an
* UncomparableUser is not comparable with itself. However, notice
* that you get no compiler error just for implementing
* Comparable<String>.
*/
static class UncomparableUser implements Comparable<String> {
@Override
public int compareTo(String user) {
return 0;
}
}
public static void main(String[] args) {
List<User> users = Arrays.asList(new User());
// Using this would cause a compiler error
// List<UncomparableUser> users = Arrays.asList(new UncomparableUser());
Collections.sort(users);
}
}
<
和>
字符是「通用」語法的一部分。標準庫充滿了「通用」接口;以一個例子來看Set
interface。
如果你問這是什麼意思:
<E extends Comparable<E>>
這意味着該類「E」傳遞必須實現Comparable
接口。
不止這些。傳入的類「E」必須實現Comparable接口,並且Comparable的泛型參數必須爲E本身。 – newacct
你的錯誤是什麼,具體是什麼? – Jeremy
沒有錯誤,我只是想知道如何使用通用編程創建接口 – Asphalt
下一次,請正確設置您的問題的格式,並在提交之前使用預覽檢查一切正常。 –