【发布时间】:2023-04-04 10:57:01
【问题描述】:
所以我想这样做:
public interface IFieldObject {
public Comparable get();
}
public interface IFieldCondition {
public boolean apply(IFieldObject field, Comparable compare);
}
public class EqualTo implements IFieldCondition {
public boolean apply(IFieldObject field, Comparable compare) {
return (field.get().compareTo(compare) == 0);
}
}
但是 Eclipse 给了我警告:
类型安全:方法 compareTo(Object) 属于 raw 类型可比。对泛型的引用 类型 Comparable 应该是 参数化
所以我把它变成了:
public interface IFieldObject {
public Comparable<?> get();
}
public interface IFieldCondition {
public boolean apply(IFieldObject field, Comparable<?> compare);
}
public class EqualTo implements IFieldCondition {
public boolean apply(IFieldObject field, Comparable<?> compare) {
return (field.get().compareTo(compare) == 0);
}
}
由于以下原因无法编译:
方法 compareTo(capture#1-of ?) 在 Comparable 类型中 不适用于论点 (可比)
这样做的正确方法是什么? (在惯用的 Java >= 1.6 之后没有警告)
【问题讨论】: