Spo*_*ter 3 java generics java-8
我已经达到了处理Java类型系统的能力极限.场景是这样的:
我需要一个方法,它可以采用一个Collection<Comparable>和一个函数,它接受一个Collection<Comparable>输入并返回该集合中的单个元素.
这似乎是这样做的:
private <T extends Comparable<T>> Comparable<T> applyFunctionOnStuff(
final Collection<Comparable<T>> stuff,
final Function<Collection<Comparable<T>>, Comparable<T>> function) {
return function.apply(stuff);
}
Run Code Online (Sandbox Code Playgroud)
但后来我无法弯曲Collections::max成为该函数的有效输入.我想知道是否有办法将这样的静态方法包装到Function类中并在此方法中使用它们.
在T定义类型时,代码中有一些冗余,T extends Comparable<T>然后每次引用类型时T都按如下方式使用它:Comparable<T>实际上应该只是T它自己.
所以你的代码应该是这样的:
private <T extends Comparable<T>> T applyFunctionOnStuff(
final Collection<T> stuff,
final Function<Collection<T>, T> function) {
return function.apply(stuff);
}
Run Code Online (Sandbox Code Playgroud)
然后你可以使用Collections::max没有任何进一步的错误
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |