が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>
したくないのは、それが正しいことだと誰かが納得しない限りです。