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
  • 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 732 korisnika na forumu :: 94 registrovanih, 11 sakrivenih i 627 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 15694 - dana 01 Feb 2026 12:23

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., AC-DC, advokat84, aleph_one, AMX72, Andrija357, Antoni S, Apok, batoze, blatruc82, casual03, Chainsaw, djboj, djuradj, draganca, dushan, Electron, esx66, eulereix, Flanker-G, Goxy1, Hardenberg, HrcAk47, ikan, istokzapad, ivan_8282, Jakonjveliki, Jeremiah, Joint Chief, Jovan1983, Koser, Krkan800, ladro, Langdorf, Lieutenant, Lj_ubo, lucko1, LUDI, M74AB3, M855, Mig 29, MiljanXD, milos.cbr, MiroslavD, mist-mist, mkukoleca, N.e.m.a.nj.a., Nebojsa81, nekdo, nenad81, nepokoreni, Niki2024, nobutado, nuke92, Orc, Paklenica, Pekman, peraklio, Pero Petković, Phalanx, picknick, Plavi1, PMsnow, Primus17, proka89, razumihin, RJ, S2M, Sevetar, Sharpshooter, siwoti, Snorks, Solunac na steroidima, Sone0883, sspp, Stanlio, suton, Tas011, Tila Painen, TwinHeadedEagle, ujke, vensla, Vlada78, vzd1389, zemljanin, zile.obr, zivojin32, Zoran1959, Zvlade, Šule, Žoržo, Žrnov, 1107, 223223