繁体   English   中英

Type Bounds In Java 数组(排序或最小) Function

[英]Type Bounds In Java Array (sort or minimum) Function

在Java中,Arrays.sort泛型function声明如下:

public static <T> void sort(T[] a, Comparator<? super T> c)

当上述定义成功时,能否提供一个示例,但以下定义不会成功:

public static <T> void sort(T[] a, Comparator<T> c)
Comparator<CharSequence> onLength = Comparator.comparingInt(CharSequence::length);
String[] test = {"hello", "you"};
Arrays.sort(test, onLength);
System.out.println(Arrays.toString(test));

如果签名只是简单的sort(T[] a, Comparator<T> c)上面的代码就会失败——在这种情况下,只有一个Comparator<String>就足够了。

你可以简单地写:

Comparator<String> onLength = Comparator.comparingInt(String::length);

但是,如果您已经有了一个比较器,或者有一个 class 可以为您提供比较器呢? 您不能只是将Comparator<CharSequence> ‘投射’到Comparator<String>

这个想法是:一个可以比较任何 2 个水果的东西当然可以比较任何 2 个苹果。 事物的用户需要告诉编译器它是这样工作的,而你通过说<? super T> <? super T>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM