java 泛型 递归类型限制,Java - 递归泛型类型定义

本文探讨了Java中Comparable接口的使用,通过示例展示了如何创建一个可比较的SortableStack接口。作者指出,当实现Comparable时,类型E必须能够与自身比较,这可能导致递归类型定义的问题。同时,文章提到了一个不合规的实现,即UncomparableUser类,它实现了Comparable但比较的对象类型不正确,导致无法在Collections.sort()中使用。博客强调了正确实现Comparable的重要性及其在排序中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

I tried to create an interface ISortableStack using > but I can't move forward. What does the following do?

>

I've tried this, but it doesn't help.

解决方案

> means that E must be a type that knows how to compare to itself, hence, the recursive type definition.

public class Comparables {

static class User implements Comparable {

@Override

public int compareTo(User user) {

return 0;

}

}

/**

* This class cannot be used with Collections.sort because an

* UncomparableUser is not comparable with itself. However, notice

* that you get no compiler error just for implementing

* Comparable.

*/

static class UncomparableUser implements Comparable {

@Override

public int compareTo(String user) {

return 0;

}

}

public static void main(String[] args) {

List users = Arrays.asList(new User());

// Using this would cause a compiler error

// List users = Arrays.asList(new UncomparableUser());

Collections.sort(users);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值