gpt4 book ai didi

java - CompareTo 的 CompareTo 不接受除 Object 类型以外的参数。

转载 作者:行者123 更新时间:2023-12-02 11:01:24 30 4
gpt4 key购买 nike

这似乎很奇怪,这并没有像我预期的那样工作。我编写了一个简单的java类,它实现Comparable接口(interface)并重写compareTo()方法。但是,它不允许我传递除对象之外的特定类型的参数。我在网上查看了其他人的代码,他们确实使用了其他类型的对象,然后我将他们的代码复制到 eclipse 中,但仍然遇到相同的错误。

我的问题是;我必须做什么才能将此对象与 Person 类型的对象进行比较。我对比较器接口(interface)(compare() 方法)也有同样的问题。

这段代码是我在网上找到的。

public class Person implements Comparable {

private String name;
private int age;

public Person(String name, int age) {
this.name = name;
this.age = age;
}

public int getAge() {
return this.age;
}

public String getName() {
return this.name;
}

@Override
public String toString() {
return "";
}

@Override
public int compareTo(Person per) {
if(this.age == per.age)
return 0;
else
return this.age > per.age ? 1 : -1;
}

public static void main(String[] args) {
Person e1 = new Person("Adam", 45);
Person e2 = new Person("Steve", 60);

int retval = e1.compareTo(e2);
switch(retval) {
case -1: {
System.out.println("The " + e2.getName() + " is older!");
break;
}
case 1: {
System.out.println("The " + e1.getName() + " is older!");
break;
}
default:
System.out.println("The two persons are of the same age!");
}
}

}

enter image description here

最佳答案

您需要使用泛型来提供特定类型。

public class Person implements Comparable<Person> { // Note the generic to Person here.
public int compareTo(Person o) {}
}

Comparable 接口(interface)的定义如下,

public interface Comparable<T> {
public int compareTo(T o);
}

关于java - CompareTo 的 CompareTo 不接受除 Object 类型以外的参数。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33007002/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com