java泛型 - 类型Comparable< capture#1-of?>中的方法compareTo(capture#1 of?)>不适用于论据 [英] java generics - The method compareTo(capture#1-of ?) in the type Comparable<capture#1-of ?> is not applicable for the arguments
问题描述
public interface IFieldObject {
public Comparable get();
}
public interface IFieldCondition {
public boolean apply(IFieldObject field,Comparable compare);
$ b $ public class EqualTo implements IFieldCondition {
public boolean apply(IFieldObject field,Comparable compare){
return(field.get()。compareTo(compare) == 0);
}
}
但Eclipse给了我警告:
类型安全性:方法compareTo(Object)属于原始
类型Comparable。参考通用的
类型Comparable应该是
参数化的
所以我把它变成了:
public interface IFieldObject {
public Comparable<?>得到();
}
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);
由于以下原因而无法编译:
类型Comparable
中的方法compareTo(capture#1 of?)
不适用于参数
(可比较)
有什么正确的方法可以做到这一点?
(无惯性Java> = 1.6的警告)
这个怎么样?
public interface IFieldObject {
public< T>可比< T>得到();
}
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);
}
}
So I want to do this:
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);
}
}
but Eclipse gives me warnings:
Type safety: The method compareTo(Object) belongs to the raw type Comparable. References to generic type Comparable should be parameterized
So I turned this into:
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);
}
}
which does not compile because of:
The method compareTo(capture#1-of ?) in the type Comparable is not applicable for the arguments (Comparable)
What's the right way to do that ? (without warnings following idiomatic Java >= 1.6)
How about this?
public interface IFieldObject {
public<T> Comparable<T> 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);
}
}
这篇关于java泛型 - 类型Comparable< capture#1-of?>中的方法compareTo(capture#1 of?)>不适用于论据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!