2011-08-20 99 views
-1

我試圖使用<E extends comparable <E>>創建一個接口ISortableStack,但我無法繼續前進。以下是做什麼的?Java - 遞歸泛型類型定義

<E extends Comparable<E>> 

我試過this,但它沒有幫助。

+3

你的錯誤是什麼,具體是什麼? – Jeremy

+0

沒有錯誤,我只是想知道如何使用通用編程創建接口 – Asphalt

+0

下一次,請正確設置您的問題的格式,並在提交之前使用預覽檢查一切正常。 –

回答

4

<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); 
    } 
} 
1

<>字符是「通用」語法的一部分。標準庫充滿了「通用」接口;以一個例子來看Setinterface

2

如果你問這是什麼意思:

<E extends Comparable<E>> 

這意味着該類「E」傳遞必須實現Comparable接口。

+3

不止這些。傳入的類「E」必須實現Comparable接口,並且Comparable的泛型參數必須爲E本身。 – newacct