Użycie danych stworzonych w innej klasie - Java

0

Witam,

Opiszę problem bardzo ogólnie ponieważ potrzebuję bardzo ogólnej podpowiedzi.
Mam sobie dwie klasy A i B.
Wewnątrz klasy A jest metoda main która tworzy mi tablicę obiektów np. int[] tab.
Wewnątrz klasy A jest metoda main która ma za zadanie narysować mi wszystkie obiekty z tablicy 'tab'.

W klasie A nie mam problemów z listowaniem zawartości tablicy i działaniem na niej.
Problem się pojawia gdy chcę się dostać do ów tablicy z poziomu klasy B.

Help me jak to zrobić ?

Pozdr,
tito

0

W klasie A napisz funkcje, która zwróci Tobie tablicę z klasy A. Zwróconą wartość przekaż do obiektu klasy B.

class A {
    private int[] tab = new int[5];
    public A() {
        for (int i = 0; i < 5; i++)
            tab[i] = i;
    }
    public int[] get() {
        return tab;
    }
}
class B {
    private int[] tab = new int [5];
    public void set(int[] tab) {
        this.tab = tab;
    }
    public int[] get() {
        return this.tab;
    }
}
public class Main {

    public static void main(String[] args) {
       A obj = new A();
       B obj2 = new B();

       obj2.set(obj.get());

       for (int j :  obj2.get()) {
           System.out.println(j);
       }
    }
}

To miałeś na myśli?

0

Chodziło mi o bardziej bezpośredni dostęp. Aby z poziomu klasy B móc zapisać:
A.tab[1] = 5; // lub coś w tym stylu.
bez potrzeby tworzenia nowej tablicy w klasie B.
Chciałbym uruchomić metodę main z klasy A wewnątrz klasy B a następnie skorzystać z tablicy jaka jest tworzona w A.
Czy jest na to sposób ?

0

Czy tworzysz jakieś obiekty klasy A i B? Po co ci dwie metody main?
Sposób jest, zadeklarować pole jako publiczne i statyczne:

public class A {
    public static int[] tab;

    public static void main(String[] args) {
        // inicjalizacja tab
    }
}

public class B {
    public static void main(String[] args) {
        A.tab[1] = 5;
    }
}

Ale to kiepski sposób.

0

moje pytanie wynikło z czystego lenistwa.
mam na uczelnię do zrobienia jedno zadanie - stworzenie tabeli czegoś tam
a w drugin zadaniu mam zrobić jakąś metodę która wykorzysta elementy tablicy stworzonej w poprzednim zadaniu.
na razie po prostu przekleiłem kod ale mam poczucie że jest to trochę nieeleganckie i dlatego szukam jakiegoś rozwiązania pozwalającego mi dostać się do tablicy stworzonej gdzie indziej...

0

Już pisząc pierwszą klasę trzeba myśleć o drugim zadaniu => tablica nie może być tworzona w metodzie main().

public class A {
    public int[] tab; //zło
    private int[] tab; //wymaga utworzenia gettera
 
    public static void main(String[] args) {
        new A()
    }
    public A(){
       // tu między innymi utworzenie tablicy
    }
    public int[] getTab() {
       return tab;
   }
     
}

a potem w klasie B:


public class B {
    public static void main(String[] args) {
        A a=new A();
        if(tablica w klasie A jest dostatecznie duża){
           a.tab[1] = 5; //jeśli pole jest public
           a.getTab()[1]=5; //jeśli pole jest private
        } 
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1