java comparator泛型_如何使用Java中的泛型引用嵌套类型?

如何创建引用嵌套泛型类型的泛型类?

我正在尝试创建一个比较器类,可以比较B的内部类型,而不需要公开这些类型.在下面的例子中,我得到一个编译器警告,用于将我的T内嵌值传递给Comparable:

public class SSCCE {

// Compare my A instances.

class AComparator implements Comparator {

@Override

public int compare(final T o1,final T o2) {

return o1.getValue().compareTo(o2.getValue());

}

}

class A extends B {

@Override Integer getValue() { return 1; }

}

class A2 extends B {

@Override String getValue() { return "Test String!"; }

}

abstract class B> {

abstract T getValue();

}

public static void main(String[] args) {

SSCCE sscce = new SSCCE();

AComparator comparator = sscce.new AComparator<>();

comparator.compare(sscce.new A(),sscce.new A());

}

}

是否可以表示使用内部值来安全地允许投射?

我试过的事情

>创建可比较的通配符(不可编译):

class AComparator2>> implements Comparator {

@Override

public int compare(final T o1,final T o2) {

Comparable> o1value = (Comparable) o1.getValue();

Comparable> o2value = (Comparable) o2.getValue();

return o1value.compareTo(o2value);

}

}

>声明一个辅助泛型参数类型(U),这简单地推迟了问题:

class AComparator3,U extends Comparable> implements Comparator {

@Override

public int compare(final T o1,final T o2) {

U o1value = o1.getValue();

U o2value = o2.getValue();

return o1value.compareTo(o2value);

}

}

...

AComparator3> comparator = sscce.new AComparator3();

该比较器不是比较类A的两个实例,而是它们的内容的一部分.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值