У меня есть абстрактный суперкласс со свойством, которое должно быть задано подклассом для правильной работы экземпляров...
abstract SuperClass {
// this list must be initialized by the subclass
List<? extends SavedSearch> savedSearches;
}
Этот абстрактный суперкласс имеет методы, которые работают с savedSearches, но зависит от подкласса, чтобы гарантировать правильную инициализацию списка.
Каковы наилучшие пути для этого?
С помощью Java легко создавать методы суперкласса , которые должны быть реализованы подклассами, но не свойствами. Я подумал о необходимости абстрактного метода initSavedSearch, подобного этому в суперклассе...
abstract initSavedSearchList();
... но это показалось странным, реализатор подкласса не обязан делать что-либо при реализации своего метода, они просто ничего не могут сделать.
Я знаю, что я могу кодировать некоторые проверки во время выполнения, чтобы убедиться, что список savedSearch инициирован до запуска кода в суперклассе, но я надеюсь, что проверки во время компиляции (сродни абстрактным методам) не будут проверяться во время выполнения.
Я увидел ответ C # на аналогичный вопрос, который предлагает скрыть конструктор по умолчанию (zero-arg) и создать конструктор в абстрактном классе, который требует список как arg. Это звучит прилично и для Java. Но мой особый класс - управляемый компонент JSF 1.x. Я новичок в JSF, но AFAIK нет простого способа заставить JSF вызвать нестандартного конструктора для Managed Beans.
Есть ли способ сделать это, когда я получаю некоторую помощь во время компиляции, чтобы гарантировать, что реализующие подклассы правильно инициализируют свойство суперкласса?
Спасибо!
Для создания документов необходимо использовать Adobe InDesign. Нам, в основном, необходимо иметь пару переменных по всему документу (название компании, название проекта и т.д.), которые должны быть заполнены.
Мне было интересно, есть ли способ взять существующий шаблон и, возможно, программно заполнить их, используя язык, с которым мне удобно (Ruby, Python и т.д.). Я попытался открыть файл Adobe InDesign с помощью текстового редактора, но когда я делаю изменения с помощью Notepad++, а затем открываю файл в InDesign, он сообщает мне, что файл поврежден.
Если у вас есть какие-либо знания о программном построении документов InDesign или какие-либо учебные пособия, которые были бы очень признательны.
PS. Я пытался проверить Adobe ExtendScript, но не нашел много документации, применимой к InDesign.
Спасибо за помощь!