がPredicate<Object>あり、同等の が必要ですPredicate<Animal>。
Predicate<Animal> provideIsSentientPredicate() {
// Won't compile -- cannot convert from Predicate<Object> to Predicate<Animal>
return Predicates.instanceOf(Human.class);
}
Predicate<Object>述語は反変であるため、aから a への変換Predicate<Animal>は安全です。Predicate<Object>aからa に変換するクリーンで読みやすい方法はありPredicate<Animal>ますか (たとえば、警告を抑制せずに)?
メソッドの型シグネチャをPredicate<? super Animal>orを返すように変更Predicate<Object>したくないのは、それが正しいことだと誰かが納得しない限りです。