Wpis z mikrobloga

Mirki z #java, głupie pytanie, ale dopiero zaczynam swoją przygodę. Mam dwie klasy, w tej głównej z metodą main stworzyłam tablicę. Jak się odnieść w metodzie w drugiej klasie do tej tablicy z klasy pierwszej?
#pytanie
  • 11
  • Odpowiedz
@acidola: Jeśli tablica nie jest statyczna to stwórz obiekt klasy, w której masz tablicę np nazwa klasy nazwaobiektu=new nazwaklasy();
teraz możesz odwołać się do tego obiektu bezpośrednio(obiekt.tablica) co raczej nie zawsze jest dobrą praktyką programistyczną lub poprzez gettery- taka metoda która daje dostęp do pola na zewnątrz klasy ale nie pozwala na zmienianie jej w bezpośredni sposób.
np int[] getArray(){
return tablica;
}. Gdy coś jest statyczne to jest wczytywane do
  • Odpowiedz
@kisi3l: Rozumiem że coś przekręciłem, tutaj chodziło mi o to że getter pozwala pobrać wartość pola bez samej zmiany tego pola(pod warunkiem że pole jest prywatne a metoda publiczna). Jeśli nie tak to chętnie dowiem się co :)
  • Odpowiedz
@guacamole: To, co zwracasz w metodzie getArray() w Twoim przykładzie, to tak naprawdę referencja do tablicy (ktoś się przyczepi?). Jeśli w jakiejś innej klasie zrobisz: klasaBazowa.getArray()[0] = 0, to wyzerujesz pierwszy element tablicy.

Ty masz najprawdopodobniej na myśli korzyść płynąca z używania getterów zamiast bezpośrednich operacji na publicznych polach taką, jak możliwość zwrócenia kopii obiektu, tym samym zachowując niezmienność klasy bazowej, co jest ciężką do przecenienia w niektórych przypadkach własnością.
  • Odpowiedz
@kisi3l: tak, o tym myślałem aczkolwiek nie widziałem że można w ten sposób odnieść się do tablicy- zmieniając jej wartosci. Jak zrobić aby nie można było zmieniać tablicy oryginalnej?
  • Odpowiedz
@kisi3l:

w Twoim przykładzie, to tak naprawdę referencja do tablicy (ktoś się przyczepi?)

Nie referencja tylko wartość referencji, czyli wskaźnik. W javie można przekazać tylko wartości, nigdy referencje.
  • Odpowiedz
Nie referencja tylko wartość referencji, czyli wskaźnik. W javie można przekazać tylko wartości, nigdy referencje.


@hellah: No wiedziałem, że się ktoś przyczepi. Jasne, jest to tak naprawdę wartość obiektu referencji, taki alias obiektu pierwotnego, którego każda modyfikacja powoduje modyfikację również tego obiektu pierwotnego.
  • Odpowiedz