implements Comparable 时 Override compareTo() 的augment问题

如果implements的是Comparable 那Override compareTo()的时候 augment 就是Object o

这个需要cast才能使用,不是很方便

如果使用generic 就方便很多了  

i.e.:

public class Person implements Comparable<Person> {
   //some code
 @Override
    public int compareTo (Person o) {
        int num = this.name.compareTo (o.name);
        return num == 0 ? this.age - o.age : num;
    }


这样的话自动override的compareTo() augment 就是 Person类型 了

也就是

java.lang
接口 Comparable<T>

类型参数:
T - 可以与此对象进行比较的那些对象的类型


这里的T 类型


今天发现的.自己对泛型还很不熟悉 需要继续加强学习奋斗

### 如何在Java中实现Comparable接口 #### Comparable接口简介 `Comparable<T>` 接口用于定义对象之间的自然顺序。当类实现了 `Comparable<T>` 接口,意味着该类型的实例可以相互比较大小。这通常通过重写 `compareTo(T o)` 方法完成。 #### 实现Comparable接口的方法 要使自定义类支持排序功能,需让此类继承 `Comparable<YourClass>` 并覆盖其唯一的抽象方法——`int compareTo(YourClass other)` 。此方法返回负数表示当前对象小于参数对象;零代表两者相等;正数则说明前者大于后者[^1]。 #### 示例代码:按年龄升序排列的人类实体 下面是一个简单的例子展示怎样创建一个能够依据成员变量age进行升序排序的Person类: ```java class Person implements Comparable<Person> { private int age; private String name; public Person(int age, String name){ this.age = age; this.name = name; } @Override public int compareTo(Person p) { return Integer.compare(this.age, p.age); } @Override public String toString(){ return "Name:"+this.name+", Age:"+this.age; } } ``` 在这个例子中,`Integer.compare()` 函数被用来简化整型数值间的对比操作。如果希望改变默认的排序方向(比如改为降序),可以在调用 `compare()` 前加上负号 `-` 或者交换两个参数的位置[^2]。 对于更复杂的场景下可能还需要考虑多个字段共同决定最终的结果,在这种情况下应该遵循一定的逻辑组合各个属性来进行综合评判。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值