Есть 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();
Как вариант решения:
public class A {
private static final A instance = new A();
private A() {
}
public A getInstance(Object o) {
return o instanceof B ? instance : null;
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Не могу запушить проект на гитхабПользуюсь Intelliji Idea
Подскажите пожалуйста как реализовать возможность вставки скопированного в системный буфер обмена файлаКопирую так:
Имеется jar для вызова, необходимо возвращать из него значение предупрежедниеКак можно получить оттуда такой ответ
Разное значение при форматировании даты в строку на разных машинах