2015-06-29 46 views
0

我在下面的代碼不兼容的邊界錯誤:不兼容的邊界錯誤:Java的泛型謂詞

Predicate<Integer> pred; 
    Iterator<Integer> daysToRunIter = Iterators.cycle(daysToRunInt); 

    if(nowHourOfDay >= schedule.getHourOfDay()){ 
     pred = val -> val > currDayOfWeek; 
    } else { 
     pred = val -> val == currDayOfWeek; 
    } 
    Iterator<Integer> subset = Iterators.find(daysToRunIter,pred); //ERROR 

的錯誤,我得到: enter image description here

它看起來像我提供兼容型Integer ,爲什麼我得到這個錯誤,我該如何解決它?

+2

正如文檔所述,'find'從'Iterator '(_「返回滿足給定謂詞的迭代器中的第一個元素」)返回一個類型爲「T」的元素。所以'subset'應該是一個Integer'我猜... –

+0

你確定這個元素存在嗎?嘗試在find方法調用中添加一個默認值作爲第三個參數。類似於Iterators.find(daysToRunIter,pred,1);' –

+0

@AlexisC。謝謝,這確實解決了它!我會把這個作爲答案,並給你信任。 – atoregozh

回答

2
Integer subset = Iterators.find(daysToRunIter,pred); 

解決了錯誤。

Credit轉到@AlexisC。