2012-03-20 1 views
-1

Есть ли способ управлять импортом подклассов путем наследования?Есть ли способ управлять импортом подклассов по наследованию

Я знаю, что это не цель наследования, но я хотел бы сделать это, потому что у меня есть своего рода шаблон источника java для QA-людей в моей компании. Я не хочу, чтобы они беспокоились об импорте при вставке java-ified selenese внутри шаблона java.

Знаете ли вы какие-либо рамки, аннотации и т. П., Которые могут это сделать?

Пример того, что я имею в виду (с воображаемым @inherit аннотацию):

@inherit 
import xyz.ABC 
class Super{ 
} 

И теперь подкласс не нужно больше импортировать ABC:

class Sub extends Super { 
    ABC abc; 
} 
+0

Просьба уточнить on * импорт подкласса * - суперкласс обычно не заботится о своих подклассах - я бы не ожидал операторов 'import' для подклассов. –

+0

Я попытался прояснить, что означает, например, дать пример с воображаемой аннотацией. – devsnd

ответ

1

Я не знаю точно, если можно аннотировать операции импорта (they're not in the list, и я не могу попробовать его на лету), и я уверен, что это невозможно с помощью apt, потому что аннотация не определена в классе, который должен быть скомпилирован ,

Но вы можете пометить операторы импорта с аннотациями (если это возможно), JavaDoc тегами или предопределенными комментариями и использовать пользовательский инструмент считывает эту информацию из суперкласса исходного файла и модифицировать исходный код, прежде чем он будет скомпилирован.

Вам понадобится библиотека, которая может использоваться для анализа исходных файлов java.


В качестве альтернативы - вы можете быть в состоянии предоставить/генерировать исходные файлы только с полностью квалифицированными названий класса, так что классы не будут нужны никакие операторы импорта вообще:

class Sub extends Super { 
    xyz.ABC abc; 
} 
+0

Благодарим вас за ответ. Но, как вы можете себе представить, это недостаточно для того, чтобы попасть в предварительную обработку исходного кода, поскольку это будет только синтаксический сахар. Я задавался вопросом, не сделал ли кто-нибудь это. К сожалению, кто-то отказался от моего вопроса, поэтому он не найдет ответа в ближайшее время ... – devsnd