Odwołanie się do obiektu poprzez zmienną (metoda)

0

Cześć,
Potrzebuję na potrzeby własnego programu zrobić tak, że jeśli w argumencie metody podam "Test" to chciałbym aby odwołało się to bezpośrednio do obiektu o takiej nazwie.
Dokładniej.
Mam plik jar w którym się znajdują pliki, ja chciałbym korzystać z metody getName, każda klasa w paczce ją posiada. Czyli chodzi mi o coś takiego:

public void podajImie(String name) {
  String var = Paczka.paczka.name.getName();  
}

Jest to możliwe w Javie? To co jest "paczka.paczka" jest stałe, getName() także się nie zmieni, zależy mi na wciśnięciu nazwy klasy.

0

Zacznij od poznania różnicy miedzy KLASĄ a OBIEKTEM. Bo to jak picie w szczawnicy i szczanie w piwnicy. A to co chcesz zrobić generalnie jest możliwe ale na 99% wcale nie jest ci potrzebne i próbujesz w dziwny sposób rozwiązać jakis trywialny problem. Napisz co chcesz osiągnąć.

0

Chodzi mi o to, że mam w paczce jar dołączonej do projektu klasy o nazwie państw.
Na sztywno do klasy odwołuje się tak:
String name = Countries.Poland.getName();
Ja chciałbym opakować to w metodę i żeby dało się podać jedynie nazwe klasy znajdującej się w paczce (jako argument) i aby to od razu zwracało nazwe (getName) czyli Stringa w tym przypadku.

Wybacz jeśli wcisnąłem tam gdzieś słowo obiekt, chodzi tylko i wyłącznie o klasę i wywołanie jej metody.

0

Chodzi mi o to, że mam w paczce jar dołączonej do projektu klasy o nazwie państw. mam nadzieje że żartujesz bo przeczuwam kolejną odsłonę http://4programmers.net/Forum/Spolecznosc/Perelki/196050-jak_rozplanowac_program?p=831651#id831651 i https://4programmers.net/Forum/Spolecznosc/Perelki/196151-planetary_motion_visualiser_2012 ;]

0

Nie no śmieje się do siebie ale przysięgam, że mówię serio. Może jestem głupi i nie widze czegoś...
Chcę tylko użyć nazwy z argumentu a nie robić 200 metod dla każdego państwa.

0

Ahhh okej, rozumiem, że chodzi Ci o to, że idiotyzmem jest robić tyle klas.
W każdym razie ja otrzymałem tę paczkę i muszę z niej korzystać i tylko z niej. Nie mam wpływu na jej zawartość, jest tam tyle klas i muszę się dostać do każdej w zależności od podanego Stringa w argumencie...

Proszę się nie śmiać :([*]

0

Ale już zrobiłeś 200 klas (!) dla każdego państwa o_O Jeszcze raz powtarzam: napisz co chcesz osiągnąć, bo teraz robisz to źle.
Masz jakiś prosty "problem" ale wymyśliłeś dla niego chore rozwiązanie, które teraz wymaga bardzo dziwnych konstrukcji języka. Poprawnym podejściem jest rozwiązać problem wyjściowy po ludzku, a nie brnąć dalej w to dziwne rozwiązanie.

Zamontowałeś w samochodzie kwadratowe koła i zamiast wymienić je na okrągłe to próbujesz teraz przerobić wszystkie drogi na schody żeby dało sie tym samochodem jechać...

Anyway to o co pytasz zrobić sie oczywiście da ->
Class<?> clazz = Class.forName("x.y.z.Klasa");
i stąd możesz pobrać listę metod, tworzyc obiekty tej klasy, robić wywołania itd, ale to jest bardzo zły pomysł.

0

Class.forName i newInstance.
Nie wnikam po co Ci to, obecnie chyba rzadko się to stosuje w aplikacjach, ale masz (nie testowane):

      
Class c   = Class.forName("com.xyzws.AClass"); 
AClass a = (AClass)c.newInstance();
String className = a.getClass().getSimpleName();
System.out.println("Name: " + className);
0

Użyj jak człowiek SPI do tego: Własne usługi w JSE

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