首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >可比较的CompareTo不使用对象类型以外的参数。

可比较的CompareTo不使用对象类型以外的参数。
EN

Stack Overflow用户
提问于 2015-10-08 05:01:35
回答 2查看 4.8K关注 0票数 3

似乎奇怪的是,这没有如我所预期的那样起作用。我编写了一个简单的java类,它实现了类似的接口,并覆盖了compareTo()方法。但是,它不允许我传递对象以外的特定类型的参数。我在网上查看了其他人的代码,他们使用了其他类型的对象,我将他们的代码复制到eclipse中,但我还是得到了同样的错误。

我的问题是,我要做什么来比较这个对象和类型的对象,比如Person。比较器接口(比较法)也有同样的问题。

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

代码语言:javascript
运行
复制
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!");
    }
}

}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-08 05:04:51

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

代码语言:javascript
运行
复制
public class Person implements Comparable<Person> { // Note the generic to Person here.
    public int compareTo(Person o) {}
}

Comparable接口定义如下,

代码语言:javascript
运行
复制
public interface Comparable<T> {
    public int compareTo(T o);
}
票数 13
EN

Stack Overflow用户

发布于 2015-10-08 05:04:58

您可以使用泛型来使用自定义对象类型。将类定义更改为

代码语言:javascript
运行
复制
public class Person implements Comparable {

代码语言:javascript
运行
复制
public class Person implements Comparable<Person> {

现在,您应该能够将Person对象传递给您的compareTo方法,如下所述:

代码语言:javascript
运行
复制
@Override
public int compareTo(Person personToCompare){

在这里了解更多关于泛型的信息:

https://docs.oracle.com/javase/tutorial/java/generics/types.html

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33007002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档