我有以下情况
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不在其范围内必须实现Comparable,即使我已经在类中实现了compareTo。
答案 0 :(得分:0)
这会编译并执行您想要的操作,我认为:
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枚举设置一个特定的类。