Java Refleksje

0

Mam pewien problem, nie rozumiem do końca jak ten mechanizm działa. Mam w jakimś tam pakiecie, w bibliotece, klasę abstrakcyjną, którą to ma załadowana klasa rozszerzać. Z tego co zaobserwowałem (niestety nie znalazłem dobrego materiału), klasa musi się znajdować w takim pakiecie, w jakim została stworzona (problem z class name). Chciałbym wczytywać klasy normalnie, podając wskazany plik, ścieżkę do niego. Jak mam to rozwiązać? Będę wdzięczny za pomoc.

Koziołek
Jeszcze raz. Może pokaż jakiś kawałek kodu, bo opis jest lekko zagmatwany.
staszkox
Możesz odwołać się do klasy podając nazwę pakietu np. edu.cmu.cs.xxxx.TwojaKlasa, o to chodzi?
0

@staszkox, dokładnie, tyko jeżeli klasa zostanie skompilowana w pakiecie xx.x, to abym mógł ją załadować w swoim programie, muszę ją wrzucić dokładnie w to samo miejsce, bo inaczej class name/path się nie będzie zgadzał.

Czyli jeżeli założymy, że klasy, będą ładowane w pakiecie xx.x, to będzie trzeba otworzyć jara, i po prostu tę klasę tam wpakować...
Dodatkowo Windows nie pozwoli tego zrobić w trakcie działania programu.

Wolałbym przeznaczyć do tego jakiś folder, gdzie będą przechowywane te pluginy.
Przykład paterny w gimpie.

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0
  1. Nie używaj gołych plików class jako pluginów tylko jarów razem ze strukturą pakietów
  2. Nie używaj gołej refleksji tylko zamiast tego niech plugin ma jakis entry point implementujący twój interfejs Plugin oznaczony przez @Named, a ty w swojej aplikacji użyjesz jakiegoś CDI (choćby i Springa) żeby przeskanować classpath i instancjonować pluginy.

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
0

Dzięki @Shalom, prawdę mówiąc czekałem na Ciebie :)
Brakuje mi wiedzy, nie wiem gdzie ją nabyć. Nawet nie liznąłem jeszcze springa. Różnica między tymi dwoma metodami?

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

Różnice? W twojej wersji upiszesz sie jak szalony dziwnego kodu, w mojej to będą 2 linijki.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.