Разрешить только классам в предопределенных пакетах вызывать конструктор / метод? - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть класс, и я хочу, чтобы только некоторый класс мог вызывать его конструктор. Я знаю, что простым java единственный способ достичь этого - создать конструктор на уровне пакета и / или сделать его защищенным, но нет какой-то инфраструктуры / библиотеки, позволяющей мне сделать что-то вроде этого:

@AllowedCallers({"com.foo", "foo.bar"})
public MyConstructor(){
   ....
}

?

1 Ответ

0 голосов
/ 18 апреля 2020

Это может быть способ;

  1. делает все конструкторы классов частными
  2. добавляет метод stati c и ограничивает вызывающую функцию с помощью generi c bound public static <T extends ClassCanCallNew> void newMyClass(T clazz, Object... args)
  3. Только кто-то расширяет ClassCanCallNew может вызывать частные конструкторы с помощью этого метода
  4. clazz.setMyClass(new MyClass(args)); сделать эту строку подходящей для ваших собственных нужд
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...