adgang til variabler

Tags:    java

Er der nogen der kan fortælle mig hvordan jeg bruger fx variable defineret i en funktion i en anden.
Jeg er nu ved at lave noget hvor jeg har lavet et hashmap i en funktion, nu vil jeg gerne bruge den fra en anden funktion. I c plejer jeg bare at deklarere globalt. hvordan gør man i java?



Din kode lyder virkelig ikke særlig holdbar, men du kan vel bare returne den fra funktionen..?



Du kan ikke få direkte adgang til den, men du kan, som Jakob siger, retunere den eller kalde den anden metode med den som parameter.

Du kan også deklarere den så hele klassen kan få adgang til den, vis du deklarere den uden for en funktion, men du kan ikke deklarere den globalt.




Du kan også deklarere den så hele klassen kan få adgang til den, vis du deklarere den uden for en funktion, men du kan ikke deklarere den globalt.


Arh...det er da ikke helt sandt. Hvis du deklarede den som public static skulle jeg da mene du har adgang til den fra alt....



Kun vis man lavede en instans af objectet. Man kan også lave dem static, men så kan man ikke lave non-static refferencer til dem... men det kan godt være at min definition på global ikke er helt den samme som alle andres :D



Returner mappen i den anden funktion.
Det er jo dumt at lave en global klasse med static variabler. Dårlig kodestil. Ihvertfald til det du vil lave, hvis jeg har forstået dig rigtig!! Du har en funktion som generer en hashmap udfra noget data. Denne hashmap vil du bruge i en anden funktion. Laver du mappen global, så kan alle tilgå den og ændre i den, hvilket, i mine øjne, er dårligt, for du kan aldrig stole på at dataen i hashen faktisk er det du vil have. Derfor er mit forslag at du returnerer mappen.



Scope er et område indenfor hvilket en variable, funktion eller hvad det nu er synlig. Derfor vil en public static deklareret variabel være synlig i det global scope (ikke helt da man skal appende et klassennavn foran, men det kan bruges hvis man har et absolut behov for at kunne tilgå variable på den måde)...Rent faktisk kan man kode rent imperativt hvis man deklarerer alle sine funktioner static, men så er der ikke meget ved at bruge et objekt orienteret sprog.
----
Martin Slot du har så ganske ret i at det er dårlig kodestil, men at sige det er umuligt at arbejde med globale variable er jo ikke sandt. Jeg undgår altid selv at bruge denne mulighed: Objekt-orienteret programmering er nu engang et spørgsmål om indkapsling. .



Laver man de globale variabler static kan de rigtig nok ikke ændres, men det er stadig dårlig kodestil. Skal man til at bruge globale variabler så kunne det tyde på at man angriber problemet forkert. Men igen, så kender jeg slet ikke problemet, for det kunne jo være at der ikke var andre måder at lave det på.




t