我收到与theTree.insert(new File("a", 1));
:The method insert(Comparable) in the type Tree is not applicable for the arguments (File)
相符的错误。
当我尝试演员theTree.insert((Comparable) new File("a", 1));
时,我会收到其他错误:E xception in thread "main" java.lang.ClassCastException: File cannot be cast to java.lang.Comparable at TreeApp.main(tree.java:134)
。
为什么我不能传递这个对象?
我的对象:
class FileObject
{
public String name;
public int size;
File(String a, int b)
{
this.name = a;
this.size = b;
}
}
答案 0 :(得分:7)
因为您的File
课程没有实施Comparable
。
答案 1 :(得分:4)
您需要实施Comparable<File>
class File implements Comparable<File>
{
public String name;
public int size;
File(String passedName, int passedSize)
{
this.name = passedName;
this.size = passedSize;
}
@Override
public int compareTo(File o) {
//e.g Provide comparable on size
return Integer.valueOf(size).compareTo(o.size);
}
}
参考文献:
注意:请在compareTo
方法的合同中提供equals
实施。