2017-05-15 9 views
6

Filtreyi uyguladıktan sonra sayıları saymak için basit bir genel yöntem oluşturmak istiyorum. İkinci parametre ilki bağlıdır olarakFiltre uyguladıktan sonra sayıları saymak için basit bir genel yöntem oluşturmak istiyorum

incompatible types: Predicate cannot be converted to Predicate<? super CAP#2> where CAP#1,CAP#2 are fresh type-variables:

CAP#1 extends Number from capture of ? extends Number

CAP#2 extends Number from capture of ? extends Number

+0

Yardımlarınız için teşekkür ederiz. –

cevap

6

Sen böyle jokeri kullanamazsınız: Bana bu hata veriyor

static int count(Collection < ? extends Number > numbers, Predicate < ? extends Number > predicate) { 
    return numbers.stream().filter(predicate).count(); 
} 

! Kendi versiyonunuzda bir Elma Koleksiyonu almak istediğinizi ve bunun üzerine bir Muz Öncüsü uygulamanız gerektiğini ima eder. Başka bir deyişle: sadece bilinmeyen tipte bir parametre belirtmeniz yeterlidir; ve bu kullanın: Kayıt için

static <T extends Number> long count(Collection<T> numbers, Predicate <T> predicate) { 

: Uzun bir sonuç döndürür count(); Böylece dönüş türünü buna göre değiştirdim. İstediğiniz şey bu değilse, int için değil, (potansiyel) bilgi kaybıyla yaşamak zorundasınız.

İlgili konular