我尝试使用ISortableStack
创建一个界面<E extends comparable <E>>
,但我无法继续前进。以下是做什么的?
<E extends Comparable<E>>
我已经尝试了this,但它无济于事。
答案 0 :(得分:4)
<E extends Comparable<E>>
表示E
必须是知道如何与本身进行比较的类型,因此,递归类型定义。
public class Comparables {
static class User implements Comparable<User> {
@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<String>.
*/
static class UncomparableUser implements Comparable<String> {
@Override
public int compareTo(String user) {
return 0;
}
}
public static void main(String[] args) {
List<User> users = Arrays.asList(new User());
// Using this would cause a compiler error
// List<UncomparableUser> users = Arrays.asList(new UncomparableUser());
Collections.sort(users);
}
}
答案 1 :(得分:2)
如果你问这是什么意思:
<E extends Comparable<E>>
这意味着传入的类'E'必须实现Comparable
接口。
答案 2 :(得分:1)
<
和>
字符是“通用”语法的一部分。标准库充满了“通用”接口;请查看Set
interface以获取示例。