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.

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.

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.
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?

0

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

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