У меня есть два класса с методами, и я хочу объединить методы двух классов с одним классом.
@Service("ITestService")
public interface ITest1
{
@Export
void method1();
}
@Service("ITestService")
public interface ITest2
{
@Export
void method2();
}
Результат должен быть:
public interface ITestService extends Remote
{
void method1();
void method2();
}
Первый запуск моего AnnotationProcessor генерирует правильный вывод (поскольку RoundEnvironment содержит оба класса).
Но если я отредактирую один из классов (например, добавив новый метод), RoundEnviroment содержит только отредактированный класс, и поэтому результат будет follwing (добавление newMethod() в интерфейс ITest1)
public interface ITestService extends Remote
{
void method1();
void newMethod();
}
Теперь метод method2 отсутствует. Я не знаю, как исправить мою проблему. Есть ли способ (Enviroment), доступ ко всем классам в проекте? Или есть другой способ решить эту проблему?
Код для генерации класса довольно длинный, поэтому здесь приводится краткое описание того, как я генерирую класс. Я повторяю Элементы с помощью env.getElementsAnnotatedWith(Service.class)
и извлекаю методы и записываю их в новый файл с помощью:
FileObject file = null;
file = filer.createSourceFile("com/test/" + serviceName);
file.openWriter().append(serviceContent).close();