1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
package inference.guava;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collector;
@SuppressWarnings("") // Just check for crashes.
public class Bug10 {
public static <T> Collector<T, ?, List<T>> least(int k, Comparator<? super T> comparator) {
return Collector.of(
() -> TopKSelector.<T>least(k, comparator),
TopKSelector::offer,
TopKSelector::combine,
TopKSelector::topK,
Collector.Characteristics.UNORDERED);
}
static final class TopKSelector<T> {
TopKSelector<T> combine(TopKSelector<T> other) {
throw new RuntimeException();
}
public static <T extends Comparable<? super T>> TopKSelector<T> least(int k) {
throw new RuntimeException();
}
public static <T extends Comparable<? super T>> TopKSelector<T> greatest(int k) {
throw new RuntimeException();
}
public static <T> TopKSelector<T> least(int k, Comparator<? super T> comparator) {
return new TopKSelector<T>(comparator, k);
}
public static <T> TopKSelector<T> greatest(int k, Comparator<? super T> comparator) {
throw new RuntimeException();
}
private TopKSelector(Comparator<? super T> comparator, int k) {}
public void offer(T elem) {
throw new RuntimeException();
}
public List<T> topK() {
throw new RuntimeException();
}
}
}
|