Также отметим, что если вы используете интерфейсы, вы можете использовать java.lang.reflect.Proxy для создания экземпляра интерфейса, локального для вашего загрузчика классов, который под капотом делает вызовы с отражением "реального" (чужой) объект из другого загрузчика классов.Это ужасно, и если параметры или возвращаемые типы не являются примитивными, вы просто будете передавать ClassCastException дальше по линии.В то время как вы можете настроить что-либо для выполнения этой работы, в целом, лучше иметь родительский загрузчик классов с некоторыми общими типами, которые вы хотите использовать в загрузчиках классов, или использовать больше ... Сериализованный формат для связи (медленнее) или общий доступ только к интерфейсам, имеющим дело с примитивами.