2
我不確定以下內容是否足夠複雜或過於複雜。它基本上歸結爲一個相互關聯的類和接口。 (見下文)的建議表示讚賞....Java泛型:複雜模板定義
/**
* @param <T> item type
* @param <TF> table format type
*/
interface EnumTableFormatItem<T, TF extends TableFormat<T>> {
Object getValue(TF context, T item);
String getLabel();
}
/**
* @param <T> item type
* @param <E> enum type which specifies each column
*/
static public class EnumTableFormat
<
T,
E extends Enum<E>
& EnumTableFormatItem<T, EnumTableFormat<T, E>>
> implements TableFormat<T>
{
final private List<E> fields = new ArrayList<E>();
public EnumTableFormat(List<E> fieldList) { this.fields.addAll(fieldList); }
@Override public int getColumnCount() { return this.fields.size(); }
@Override public String getColumnName(int column) {
return this.fields.get(column).getLabel();
}
@Override public Object getColumnValue(T item, int column) {
return this.fields.get(column).getValue(this, item);
}
}
編輯:在一個快速的反映,它似乎過於複雜,我只是想使用一個對象上下文&我覺得我不應該已經將它連接到EnumTableFormat。
(看我的回答)
+1爲您的'列表 extends E>'在構造函數中。否則,我喜歡分離出我的上下文對象。 – 2010-04-30 15:47:11