Есть 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;
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Не могу запушить проект на гитхабПользуюсь Intelliji Idea
Подскажите пожалуйста как реализовать возможность вставки скопированного в системный буфер обмена файлаКопирую так:
Имеется jar для вызова, необходимо возвращать из него значение предупрежедниеКак можно получить оттуда такой ответ
Разное значение при форматировании даты в строку на разных машинах