[英]Java - recursive generic type definitions
我嘗試使用<E extends comparable <E>>
創建接口ISortableStack
但是我無法前進。 以下是做什么的?
<E extends Comparable<E>>
我已經嘗試過了 ,但這沒有幫助。
<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);
}
}
如果您要問這是什么意思:
<E extends Comparable<E>>
這意味着傳入的類“ E”必須實現Comparable
接口。
<
和>
字符是“通用”語法的一部分。 標准庫充滿了“通用”接口。 以Set
接口為例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.