Java通用比较器
然后它确实起作用了,但给了我一个警告说Java通用比较器,java,generics,comparator,Java,Generics,Comparator,然后它确实起作用了,但给了我一个警告说 comparator = new comp; 我可以理解原始类型的含义。我没有指定类型,但不知何故它是有效的,如果我试图通过指定类型来修复警告,那么它会抛出一个错误。你能帮我弄清楚吗?我知道。。。我是一个傻瓜我的代码一定是你眼中的痛。我正在玩通用比较器,并尝试着熟悉很多东西。谢谢。您的代码让您感到困惑,因为comp定义的T隐藏了arr定义的T。对于下面的解释,我将它们称为Tcomp和Tarr Tcomp需要扩展compariable,但Tarr不需要扩展
comparator = new comp;
我可以理解原始类型的含义。我没有指定类型,但不知何故它是有效的,如果我试图通过指定类型来修复警告,那么它会抛出一个错误。你能帮我弄清楚吗?我知道。。。我是一个傻瓜我的代码一定是你眼中的痛。我正在玩通用比较器,并尝试着熟悉很多东西。谢谢。您的代码让您感到困惑,因为
comp
定义的T
隐藏了arr
定义的T
。对于下面的解释,我将它们称为Tcomp
和Tarr
Tcomp
需要扩展compariable
,但Tarr
不需要扩展,这意味着Tarr
不能“映射”到Tcomp
要修复,请更改Tarr
,因此还需要扩展可比较的:
warning: [rawtypes] found raw type: arr.comp
comparator = new comp();
或者,将comp
作为一个内部类,并让它重用外部类中的T
:
static class comp<T extends Comparable<T>> implements Comparator<T>
您在哪里运行新公司?这个T
类型在这里的类之外是不存在的,如果它存在,那么它必须是一个在其他方面类似的类型。另外,newcomp代码>只是没有编译,你需要括号谢谢你的详细解释@如果这回答了您的问题,您应该单击问题旁边的复选标记,以便其他人可以看到问题的回答令您满意。
comparator = new comp;
warning: [rawtypes] found raw type: arr.comp
comparator = new comp();
public class arr<T extends Comparable<T>>
static class comp<T extends Comparable<T>> implements Comparator<T>
class arr<T extends Comparable<T>>
{
class comp implements Comparator<T>
public class arr<T extends Comparable<T>>
{
ArrayList<T> list;
Comparator<T> comparator;
public arr()
{
list = new ArrayList<T>();
comparator = Comparator.naturalOrder();
}
// rest of code
}