Lokalna klasa u javi

Lokalna klasa u javi

offline
  • Pridružio: 29 Maj 2014
  • Poruke: 54

Radim lokalne klase,sada imam pitanje ,zasto taj metod moze samo da primi final kao parametar ? Citao sam da je to zbog JVM-a,ali nije mi bas jasno tacno kako to sve funkcionise sa lokalnim klasama.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Ko te je to slagao Smile Možeš slobodno da koristiš i parametre koji nisu final. Evo jednostavnog primera:

public class Main {     public static void main(String[] args) {         System.out.println(String.valueOf(calc(1, 2)));     }     public static int calc(int x, int y) {         class Operation {             public int add(int z) {                 return x + y + z;             }         }         Operation op = new Operation();         return op.add(5);     } }

Ono što ne smeš da radiš je da menjaš parametre koje funkcija dobije, a koristiš ih direktno u lokalnoj klasi jer se ona u suštini ponaša kao closure i skoro sva pravila koja važe za njih važe i za lokalne klase. Ako zaista imaš potrebu da menjaš ulazne parametre (što je uglavnom loša praksa), onda lokalni klasu možeš da prepišeš tako da umesto ulaznih parametara funkcije, zahteva njihovu kopiju u svojim funkcijama. Na primer ovako:

public class Main {     public static void main(String[] args) {         System.out.println(String.valueOf(calc(1, 2)));     }     public static int calc(int x, int y) {         class Operation {             public int add(int x, int y, int z) {                 return x + y + z;             }         }         x++;         y--;         Operation op = new Operation();         return op.add(x, y, 5);     } }



Ko je trenutno na forumu
 

Ukupno su 632 korisnika na forumu :: 9 registrovanih, 1 sakriven i 622 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Koridor, lakson001, mile23, Mixelotti, oldtimer, radionica1, sasa76, Sass Drake, Wisdomseeker