Wpis z mikrobloga

#java #naukaprogramowania
może mi ktoś wytlumaczyc co tutaj się wyprawia ?

reduce(new IntBinaryOperator() {
int applyAsInt(int left, int right) {
return Math.max(left, right);
}
});

tworzymy nowy obiekt IntBinaryOperator jako parametr metody reduce, i dlaczego potem sa klamry ?
  • 11
  • Odpowiedz
@grizzly_joe: To oznacza klasę anonimową, czyli że w locie zostaje zaimplementowany interfejs (wszystkie jego metody) - w tym przypadku metoda applyAsInt().
  • Odpowiedz
IntBinaryOperator


@grizzly_joe: btw, używasz IntBinaryOperator czyli masz JDK co najmniej 1.8 - a w Javie 8 możesz skrócić te ceremoniały korzystając z referencji do metod (? - mówiąc po ludzku "method reference").
  • Odpowiedz
@size: To nie wiem po co wgl tu wprowadzasz dziwne nazwy, po prostu klasa anonimowa - nie nadajesz jej nazwy, i bez zbędnego kombinowania.
Bo tak to po kompilacji i tak stworzy w tym samym package klasę o nazwie NazwaKlasy$1.
Bo też:
@grizzly_joe
Tak samo można robić z każdą klasą (co nie jest finalna itd), np: Object obj = new Object(){}, tutaj też już stworzyłeś nową klasę anonimową, czasem ludzie
  • Odpowiedz