Страницы

Поиск по вопросам

пятница, 12 июля 2019 г.

Доступ к конструктору класса только из одного класса в другом пакете

Есть 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();

Комментариев нет:

Отправить комментарий