簡體   English   中英

如何聲明每個實現的對象的Java List Comparable

[英]How to declare Java List of Object where each one implements Comparable

這是情況...

我有一個List<Object> ,必須將其傳遞到代碼的相當通用的部分。 在某些部分中,列表需要排序。

我不會預先知道列表中是什么類型的對象。 但是,通過使用此列表的方式,我保證Comparable的合同使列表中的每個項目都是同一類型,並且可以相互比較。

換句話說,在某些情況下,實際類型最終將為String ,而在其他情況下,則為Date 在另一些情況下,一些Custom認為implements Comparable<Custom>

但是,在每種情況下,如果實際類型為String ,則列表中的所有項目都將為String類型。

讓我更具體地說明一下這個問題...

這是我正在研究的課程:

public class Thing {
   private Map<String, List<SourcedValue<Object>>> properties;
}

然后, SourcedValue是這樣的:

public class SourcedValue<T> {
  private T value;
  private List<Sources> sources;
}

那么,您如何建議我宣布這一點?

您需要列表中的所有元素都是Comparable ,而不僅僅是Comparable ,彼此可比。 在方法級別實施此方法的方法是聲明一個類型變量,其自身具有Comparable 由於Comparable充當消費者,因此PECS(生產者擴展,消費者超級)建議對Comparable本身的類型參數定下限。

public <T extends Comparable<? super T>> void yourMethod(List<T> list) {
     // Your implementation here.
}

根據您的實際情況,類型變量T可能在類而不是方法上。

public class YourClass<T extends Comparable<? super T>> {
    public void yourMethod(List<T> list) {
         // Your implementation here.
    }
}

暫無
暫無

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

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