Java - 递归泛型类型定义
问题描述:
我试图使用<E extends comparable <E>>
创建一个接口ISortableStack
,但我无法继续前进。以下是做什么的?Java - 递归泛型类型定义
<E extends Comparable<E>>
我试过this,但它没有帮助。
答
<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);
}
}
答
如果你问这是什么意思:
<E extends Comparable<E>>
这意味着该类“E”传递必须实现Comparable
接口。
+3
不止这些。传入的类“E”必须实现Comparable接口,并且Comparable的泛型参数必须为E本身。 – newacct
你的错误是什么,具体是什么? – Jeremy
没有错误,我只是想知道如何使用通用编程创建接口 – Asphalt
下一次,请正确设置您的问题的格式,并在提交之前使用预览检查一切正常。 –