为什么我不能将我的File对象插入为可比较的?

时间:2012-11-06 08:00:24

标签: java oop object comparable

我收到与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;
    }
}

2 个答案:

答案 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实施。