[英]Specifying generic enum type as type when extending abstract class
我有以下情況
public interface MyCriteria<T extends Comparable<T>>{
public T getValue();
}
public abstract class AbstractMyCriteria<T extends Comparable<T>> implements MyCriteria<T>{
private String code;
public AbtsractMyCriteria(String code){
this.code=code;
}
}
我有許多不同類型的類,例如以下類型(日期,字符串,整數等)。
public DateEqualsMyCriteria extends AbstractMyCriteria<Date>{
private Date value;
public DateEqualsMyCriteria(String code,Date value){
super(code);
this.value=value;
}
@Override
public Date getValue(){
return value;
}
}
我需要編寫另一個可以將Enumerations作為類型而不是Date,Integer,String等的類型的類,但是我嘗試的所有操作都會導致編譯錯誤。
例如說我有以下列舉
public enum Type {
Attribute,
Entity
}
public enum Operation {
Equal,
GreaterThan,
GreaterThanOrEqualTo,
LessThan,
LessThanOrEqualTo,
NotNull,
Null,
Wildcard
}
我需要能夠做到
EnumEqualsMyCriteria enumEqualsMyCriteria=new EnumEqualsMyCriteria("Name",Type.Entity);
任何建議將不勝感激。
更新
我試過的是
public class AttributeEnumEqualsFlexxCriteria extends AbstractFlexxCriteria<Enum> implements Comparable<Enum>
但這給出了錯誤java.land.Enum不在其范圍之內,即使我在類中實現了compareTo,也必須實現Comparable。
我認為這可以編譯並執行您想要的操作:
public class EnumEqualsMyCriteria<T extends Enum<T>> extends AbstractMyCriteria<T>{
private T value;
public EnumEqualsMyCriteria(String code,T value) {
super(code);
this.value=value;
}
@Override
public T getValue() {
return value;
}
public static void main(String[] args) {
EnumEqualsMyCriteria<Type> ec=new EnumEqualsMyCriteria<Type>("Name", Type.Entity);
}
}
如果願意,您當然可以為Type枚舉指定一個特定的類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.