public interface MyFunc<T> {
boolean func(T v1, T v2);
}
public class HighTemp {
private int hTemp;
HighTemp(){
}
public HighTemp(int ht) {
this.hTemp = ht;
}
boolean sameTemp(HighTemp ht2){
return hTemp == ht2.hTemp;
}
boolean lessThanTemp(HighTemp ht2){
return hTemp < ht2.hTemp;
}
}
class InstMethWithObjRef {
static <T> int counter(T[] vals, MyFunc<T> f, T v){
int count = 0;
for (int i = 0; i < vals.length; i++) {
if(f.func(vals[i], v)) count++;
}
return count;
}
public static void main(String[] args) {
int count;
//Create an array of HighTemp objects.
HighTemp[] weekDayHighs = {new HighTemp(89), new HighTemp(82),
new HighTemp(90), new HighTemp(89),
new HighTemp(89), new HighTemp(91),
new HighTemp(84), new HighTemp(83)};
count = counter(weekDayHighs, HighTemp::lessThanTemp,new HighTemp(89));
System.out.println(count);
}
}
S'il vous plaît expliquer commentExpliquer Java 8 S'il vous plaît Méthode de référence à l'instance Méthode utilisant la classe
boolean sameTemp()
est compatible avecfunc()
dans l'interface fonctionnelle.sameTemp()
méthode a été implémentée surfunc()
dans l'interface fonctionnelle.count = counter(weekDayHighs, HighTemp::sameTemp, new HighTemp(89));
travaille
S'il vous plaît expliquer tous les points séparément.
Ce code fonctionne f ine mais je ne comprends pas comment sameTemp() est compatible avec func(), quand func() a deux paramètres et sameTemp() en a un. –
commentez-moi si vous ne comprenez pas ma question –
Êtes-vous sûr que le code fonctionne? 'hTemp' est déclaré comme' static' donc chaque fois que vous construisez 'HighTemp' la valeur change pour toutes les instances, ce qui ferait que' count' soit toujours 0. – MirMasej