【问题标题】:java - Create a Comparator for a type that contains type parametersjava - 为包含类型参数的类型创建一个比较器
【发布时间】:2017-10-25 15:45:17
【问题描述】:

我有一个定义为 MyClass<T, S> 的类,我想为其创建一个比较器,用于 MyClass,其中 T 和 S 扩展 Foo。

我该怎么做?

不成功的尝试:

// Warning: The type parameter MyClass is hiding the type MyClass<T,S>
public class MyComparator<MyClass> implements Comparator<MyClass>

// Syntax errors and the warning from above
public class MyComparator<MyClass<T, S>> implements Comparator<MyClass<T, S>>

// Syntax errors
public class MyComparator<MyClass<T extends Foo, S extends Foo>> implements Comparator<MyClass<T extends Foo, S extends Foo>>

// Syntax errors and the warning from above
public class MyComparator<MyClass<? extends Foo, ? extends Foo>> implements Comparator<MyClass<? extends Foo, ? extends Foo>>

以及上述的各种组合。正确的方法是什么?谢谢。

【问题讨论】:

  • 为什么这些尝试都不成功?您是否收到错误消息或它们没有按预期工作?请不要忘记在询问“为什么我的代码不起作用,帮助”时包含这些内容。
  • 你的Comparator为什么要实现Comparable?!
  • ...应该实现Comparator&lt;...&gt;

标签: java generics comparator type-parameter


【解决方案1】:

您的课程不是通用的。它总是比较相同类型的对象,因为这种类型是MyClass&lt;? extends Foo, ? extends Foo&gt;

应该是这样的

public class MyComparator implements Comparator<MyClass<? extends Foo, ? extends Foo>>

【讨论】:

    猜你喜欢
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多