当前位置: 首页 > 知识库问答 >
问题:

为什么compareTo()中的参数不接受类名而只接受对象?

安坚诚
2023-03-14
    public class Node implements Comparable  
    {   int key;  
        int val;  
        public Node(int v)  
        {   val=v;  
            key=0;  
        }

    @Override
        public int compareTo(Object obj)
        {   Node nd=(Node) obj;
            return this.key-nd.key;
        }

        public Node(int v, int k)
        {   val=v;
            key=k;
        }
    } 
@Override
    public int compareTo(Node obj)
    {  
        return this.key-obj.key;
    }

共有1个答案

皇甫文乐
2023-03-14

可比性是一个指定参数化类型的接口

public interface Comparable<T>{...

我们也可以说这是一个泛型类(更短)。

因此,声明公共类节点实现可比{...
意味着您希望实现与特定类型无关的可比。实际上对于编译器公共类节点实现可比{是相同的

public class Node implements Comparable<Object>{

因此,编译器希望在类中找到public int compareTo(Object obj)方法。
而编译错误消息:

“节点不是抽象的,并且不会重写可比中的抽象方法compareTo(对象)。”

指定要在正在实现的可比接口中使用的类:(此处公共类节点实现可比 { )。

编译器将期望找到实现的方法:

public int compareTo(Node obj)
 类似资料:
  • 这似乎很奇怪,这并不像我预期的那样有效。我编写了一个简单的java类,它实现了可比接口并重写了compareTo()方法。但是,它不允许我传递Object以外的特定类型的参数。我在网上查看了其他人的代码,他们确实使用了其他类型的对象,我将他们的代码复制到eclipse中,但我仍然得到了同样的错误。 我的问题是;我必须做什么来比较这个对象和类型的对象,让我们说Person。比较器接口(compare

  • 我的脚本将,作为参数: 但当我将它作为分隔符传递时,它是空的 我知道在参数/参数解析中很特殊,但我以和引用的形式使用它。 为什么它不起作用?我使用的是Python 3.7.3 这是测试代码: 当我运行它作为它打印空。

  • 但是在scala中我需要使用: scala版本是有意义的,因为注释需要一个字符串数组。但是为什么上面的工作在java中,它不应该给出编译时错误吗? 下面的类'ArrayChecker'(我编写了一个类来说明这一点)会导致java编译时错误:

  • 我知道在原始数据类型的情况下自动类型提升的概念。但在参考数据类型的情况下,我有下面的代码可以完美地工作。 这给出了输出Array。 但是如果代替Object o,如果我们有任何其他类,那么这将显示编译时错误该方法对于Test4类型是模糊的 下面的代码给出编译时错误 正如我所知,每个引用数据类型(类、接口和数组)的默认值都是null。 那么为什么上面的代码在对象o的情况下工作呢。 提前谢谢

  • 问题内容: 我遇到了-在我看来-奇怪的行为: 为什么str.split()不会接受关键字参数,即使这很有意义?我在Python2和Python3中都发现了这种现象。 问题答案: 见这个bug和它的superseder。 是CPython中的本机函数,因此具有此处描述的行为: CPython实现细节: 一个实现可能会提供内置函数,这些函数的位置参数没有名称,即使出于文档目的而对其进行了“命名”,因此

  • 问题内容: 阅读@RequestMapping文档:http : //static.springsource.org/spring/docs/2.5.x/api/org/springframework/web/bind/annotation/RequestMapping.html 它接受String数组参数作为其路径映射。 所以这可以使用java: 但是在scala中,我需要使用: Scala版本