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