扩展抽象时将通用枚举类型指定为类型 class
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;
}
}
我有许多 class 类型,例如以下不同类型(日期、字符串、整数等)
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;
}
}
我需要编写另一个 class 来处理枚举类型而不是日期、整数、字符串等,但我尝试的所有操作都会导致编译错误。
例如我有以下枚举
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 is not within it's bounds must implement Comparable 即使我已经在 class.
中实现了 compareTo
这会编译并执行您想要的操作,我认为:
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 枚举指定一个特定的 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;
}
}
我有许多 class 类型,例如以下不同类型(日期、字符串、整数等)
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;
}
}
我需要编写另一个 class 来处理枚举类型而不是日期、整数、字符串等,但我尝试的所有操作都会导致编译错误。
例如我有以下枚举
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 is not within it's bounds must implement Comparable 即使我已经在 class.
中实现了 compareTo这会编译并执行您想要的操作,我认为:
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 枚举指定一个特定的 class。