Есть 2 отдельных пакета и в каждом по 1му классу (условно 1c и 2c)
Мне нужно сделать так, чтобы в 1с происходило что-то вроде
Class cls = Class.forName(2с.getClass().getName());
Object instance = cls.newInstance();
Для этого нужно, чтобы в 2с был public(!) конструктор без параметров. Но загвоздка в том, что нужно, чтобы экземпляр 2c создавался только в 1c и нигде больше (но если конструктор 2с public, создать экземпляр можно в любом месте приложения)
Как это реализовать?
П.С. в один пакет их положить нельзя и кусок с рефлексией убрать тоже
Ответ
У вас какая то рефлексия не полная, применив настоящую рефлексию можно вытащить даже приватный конструктор:
Constructor[] cons = SecondClass.class.getDeclaredConstructors();
cons[0].setAccessible(true); //может выкинуть исключение, если установлен SecurityManager
SecondClass secondClass = (SecondClass)cons[0].newInstance();
Комментариев нет:
Отправить комментарий