2012-05-28 5 views
0

Я создал серию плагинов для imageJ, используя интерфейс PluginFilter. Многие из этих плагинов некоторые общие задачи, и я хотел бы, чтобы их экземпляры за пределами ImageJ поэтому я создал абстрактную Analysis.java, который содержит конструкторImageJ - Невозможно загрузить плагины

public Analysis(ImagePlus imp){ 
populateDBValues(imp); 
} 

но конструктор по умолчанию. Другие плагины расширяют анализ. Я ранее повторял код в каждом из плагинов, и это работало нормально. Когда конструктор был добавлен, я получил ошибку в ImageJ, показывая сообщение «Невозможно загрузить плагины».

Я отслеживал это через исходный код до точки

catch (InstantiationException e) {log("Unable to load plugin (ins)");} 

Почему добавление конструктора причины этой ошибки?

ответ

0

От Default constructors and inheritance in Java «Java автоматически предоставляет вам конструктор по умолчанию (один без параметров), который инициализирует все переменные экземпляра класса (если они есть) с некоторыми значениями по умолчанию (0, null или false). однако вы записываете конструктор с некоторыми параметрами, и вы не пишете никакого конструктора по умолчанию, тогда Java не предоставляет конструктор по умолчанию ».

Перед созданием конструктора с параметрами ImageJ может использовать конструктор по умолчанию при загрузке плагина. После создания конструктора с параметрами конструктор по умолчанию больше не присутствует, поэтому ImageJ не может создавать экземпляры и, следовательно, вызывать ошибку.

Добавление конструкторов по умолчанию к классам решит проблему.

Смежные вопросы