• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Domyślna wartość w argumencie.

0 głosów
53 wizyt
pytanie zadane 8 listopada 2018 w Java przez sebastian970 Użytkownik (670 p.)

Witam, chciałbym się dowiedzieć w jaki sposób mogę dodać automatycznie daną listę już utworzonych obiektów do vectora lub innych kolekcji obiektów.

Iterator<osoba> it = listaosob.iterator();
for(int i =0; i<osoba.numberofobjects; i++){ 
    
    listaosob.add(osoba+i); //Tutaj nie wiem jak sprawić aby kompilator czytał to jako np. osoba1, osoba2 itp.

}

Chodzi o to, żeby moją pętla for potrafiła dopisywać wartość i do osoby tak by kompilator ją zczytywał do vectora jako obiekt np. i=1 to listaosob.add(osoba1);

Wiem, że była taka możliwość, ale nigdzie nie mogę tego znaleźć.

1
komentarz 8 listopada 2018 przez RafalS VIP (102,770 p.)
Zalezy czym jest osoba. Raz traktujesz ta nazwe jak nazwe klasy raz jak nazwe zmiennej.
komentarz 8 listopada 2018 przez sebastian970 Użytkownik (670 p.)
Właśnie osoba jest klasą posiadającą obiekty nazwane np. osoba1, osoba2, osoba3, osoba4, osoba5 itp.

Zastanawiam się w jaki sposób mógłbym zmienić np. string - "osoba"+i aby mógł on zostać użyty jako argument w listaosob.add("tutaj"); lub aby kompilator zczytał to jako nazwę obiektu.

1 odpowiedź

0 głosów
odpowiedź 8 listopada 2018 przez RafalS VIP (102,770 p.)
edycja 8 listopada 2018 przez RafalS

Właśnie osoba jest klasą posiadającą obiekty nazwane np. osoba1, osoba2, osoba3, osoba4, osoba5 itp.

Jeśli chcesz wyciągać te składowe na podstawie stringów to pytasz o refleksje. A jeśli musisz użyć refleksji to prawdopodobnie źle zaprojektowałeś klasy. Szczególnie jeśli potrzebujesz jej w tak błachym przypadku.

Zrób w klasie osoba liste tych obiektów zamiast dawac im nazwy obiekt1, obiekt2, obiekt3 ...

Gdyby był ciekawy to tak to wygląda na refleksjach:

class A{
    int a0;
    int a1;
    int a2;
    int a3;
}

public class Main {
    public static void main(String[] args) throws IllegalAccessException, NoSuchFieldException  {
        A a = new A();
        for (int i = 0; i < 3; i++) {
            System.out.println("a" + i + "= " + a.getClass().getDeclaredField("a" + i).getInt(a));
        }
    }
}

 

Podobne pytania

0 głosów
2 odpowiedzi 71 wizyt
pytanie zadane 28 września 2018 w JavaScript, jQuery, AJAX przez Bakr Mądrala (6,470 p.)
0 głosów
1 odpowiedź 58 wizyt
+1 głos
1 odpowiedź 56 wizyt
Porady nie od parady
Wynikowy wygląd pytania, odpowiedzi czy komentarza, różni się od tego zaprezentowanego w edytorze postów. Stosuj więc funkcję Podgląd posta znajdującą się pod edytorem, aby upewnić się, czy na pewno ostateczny rezultat ci odpowiada.Podgląd posta

60,274 zapytań

105,971 odpowiedzi

220,187 komentarzy

32,477 pasjonatów

Przeglądających: 198
Pasjonatów: 6 Gości: 192

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...