Nazwa klasy a sciezka do niej

0

Czesc, czy na podstawie nazwy klasy jako String, np String cl = "Test" moge wyciagnac programowo to do jakiej paczki nalezy oraz jakie interfejsy implementuje? Lub jesli ta nazwa to bedzie interfejs - to czy moge znalezc klasy ktore go implementuja?

pzdr,
misty

0
  1. Musisz mieć pełną nazwę klasy, np: java.lang.Object, java.util.Arrays, itd Potem użyj Class.forName(String)
  2. Wszystko o co pytasz możesz sprawdzić za pomocą refleksji: http://docs.oracle.com/javase/tutorial/reflect/index.html http://www.java2s.com/Tutorial/Java/0125__Reflection/Catalog0125__Reflection.htm

Edit:
Jednak nie wszystko:

Lub jesli ta nazwa to bedzie interfejs - to czy moge znalezc klasy ktore go implementuja?

Z tym już będzie ciężej, musiałabyś przeskanować chyba wszystkie klasy.

0

a powiedz mi, jesli mam Object obj = new Object(); i teraz chce to rzutowac na np klase Test, ale Test mam jako String to sie da?

0

Object na nic nie zrzutujesz. Musisz użyć np Class.forName(String).newInstance() lub Class.forName(String).getConstructor(Class<?>...).newInstance(Object...)

Jak chcesz sprawdzić czy da się zrzutować to masz np operator instanceof (zwracający boolean) czy metody Class.isInstance Class.isAssignableFrom, etc

0
Wibowit napisał(a):

Jednak nie wszystko:

Lub jesli ta nazwa to bedzie interfejs - to czy moge znalezc klasy ktore go implementuja?

Z tym już będzie ciężej, musiałabyś przeskanować chyba wszystkie klasy.

Sa biblioteki ktore potrafia przejechac wszystkie klasy w classpath i sprawdzic, ale ich nie ladowac. Nie wiem czy nawet asm tego nie ma.

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