В общем, как я могу писать программы для размещения моддинга или плагинов? Является ли каждый метод завернутым в другое поведение? Все мои поиски привели к тому, что это ресурсы для написания плагинов и модов; Я ничего не могу найти при написании систем. Что касается java, как я могу разоблачить внутренние части логики в других системах без использования рефлексии?
Один из способов сделать это - создать собственный ClassLoader, который может загружать классы из указанного местоположения, которое не находится в системном пути. (Если он находится в системном пути к классам, система ClassLoader сначала найдет классы, и вы не сможете их выгружать.) Создание экземпляров требует немного отражения, но как только они создаются, вы можете обращаться с ними точно так же, как любой другие случаи.
Это работает, потому что, хотя только пользовательский ClassLoader знает о фактическом классе этих экземпляров, он получает свое определение своего суперкласса (ваш класс или интерфейс плагина) из системы ClassLoader. Поэтому другие классы, загруженные системой ClassLoader (т.е. Остальная часть вашей программы), могут ссылаться на эти динамически созданные экземпляры своим суперклассом.
Я использовал библиотеку утилиты Brian Clapper, чтобы найти классы, расширяющие мой класс плагина.