Jest to kontynuacja pytanie odpowiedział: How to load a jar file at runtimeW jaki sposób uzyskuje się dostęp do metody z zewnętrznego słoika w środowisku wykonawczym?
Jestem niepewna, jak kontynuować do poziomu wywołania metody. Z mojego zrozumienia, z obiektu clazz, użyłbym getMethod lub getDeclaredMethod, aby uzyskać obiekt Method, z którego wywołałbym wywołanie. Oczywiście wywołanie wymaga instancji. Czyżby to było, co nazywa się doRun w przykładowym kodzie?
Czy muszę wykonać wywołanie metody doRun.run(), mimo że chcę wykonać inną metodę niż główna (zakładając, że jest ona głównym obiektem doRun wywoływanym przy wywołaniu uruchamiania)?
Po prostu dla wyjaśnienia pierwotnego postu, pytam: Czy doRun.run() uruchamia nowy wątek wykonujący wystąpienie klasy obiektu clazz?
Dzięki za pomoc w wyjaśnieniu tego dla mnie.
Spojrzałem na "how-should-i-load-jars-dynamically-at-runtime" (przepraszam, dozwolone jest tylko jedno hiperłącze), jednak to wyglądało na naruszanie napomnienia klasowego Class.newInstance w pierwszym poście. wymienione.
Tak więc, jeśli rozumiem twój komentarz po kodzie, z interfejsem, wiem jakie metody są dostępne i mogę napisać kod wywołujący metodę bezpośrednio po odpowiednim rzuceniu obiektu instancji. Czy to prawda? – Todd
Oczywiście zakłada się, że oryginalny kod został skompilowany przy użyciu interfejsu, a nie taki, który utworzę później i spróbuję rzucić to wystąpienie. – Todd
@Todd - tak, masz to. Interfejs (lub jakaś inna implementacja typu silnego) jest często używany z wtyczkami, w których kod został napisany do dynamicznego tworzenia. Jeśli wykonujesz introspekcję i wywołanie na dowolnych klasach, nie jest to opcja. – McDowell