簡體   English   中英

Java-遞歸泛型類型定義

[英]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.

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