Как получить доступ к экземпляру объекта, загруженному другим исключением загрузчика классов для использования отражения? - PullRequest
2 голосов
/ 25 августа 2010

Я запутался, что как к экземпляру объекта, загруженному другим загрузчиком классов, можно получить доступ без выброса ClassCastExcepion, за исключением использования отражения? Кажется, что использование JndiObjectFactoryBean - лучшая идея, но я не понимаю. Есть ли кто-нибудь Может дать мне понять? Большое спасибо.

1 Ответ

2 голосов
/ 25 августа 2010

Единственный способ (кроме рефлексии) - всегда использовать тип интерфейса для взаимодействия с классом;например,

public interface I {
    public void foo();
}

public class C implements I {
    public void foo(){ ... }
}

...
Classloader l1 = ...
I c1 = (I) l1.loadClass("some.pkg.C").newInstance();
c1.foo();

Classloader l2 = ...
I c2 = (I) l2.loadClass("some.pkg.C").newInstance();
c2.foo();

Интерфейс I должен быть загружен общим загрузчиком классов предка l1 и l2.И предполагая, что эти загрузчики классов (l1 и l2) действительно загружают классы, вы не можете привести либо c1, либо c2 к C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...