질문에 직접 대답하려면 ... 물론, ClassGenerator
을 스캔하고 누락 된 클래스를 생성하면됩니다. 이 후두둑는 것이 좋습니다 경우에 관해서는
@SupportedAnnotationTypes("ClassGenerator")
@SupportedSourceVersion(SourceVersion.RELEASE_6)
public class BaseClassProcessor extends AbstractProcessor {
private Elements elements;
@Override
public synchronized void init(ProcessingEnvironment processingEnv) {
super.init(processingEnv);
elements = processingEnv.getElementUtils();
}
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
for (Element element : roundEnv.getElementsAnnotatedWith(ClassGenerator.class)) {
TypeMirror mirror = ((TypeElement) element).getSuperclass();
PackageElement pacakgeElement = elements.getPackageOf(element);
String packageName = pacakgeElement.getQualifiedName().toString();
String superClassName = ((DeclaredType) mirror).asElement().getSimpleName().toString();
try {
Writer file = processingEnv.getFiler().createSourceFile(packageName + "." + superClassName).openWriter();
file.write(String.format("package %s; public class %s {}", packageName, superClassName));
file.flush();
file.close();
} catch (IOException ex) {
Logger.getLogger(BaseClassProcessor.class.getName()).log(Level.SEVERE, null, ex);
}
}
return true;
}
}
또는 가장, 당신은 당신의 요구 사항을 분석하고 이러한 요구 사항을 만족하는지 확인해야 할 것 : 여기에서 기본 작업 프로세서입니다.
궁금한 점 : 왜? – Fildor
@Fildor 더 세련된 클래스를 만들 수 있습니다. 생성 된 클래스에서 물건을 재정의 할 수 있어야합니다. 저의 대안은 생성해야 할 것을 정의하는 1 클래스, 모든 우선 순위를 가진 클래스에서 파생 된 두 번째 클래스입니다. – Hounshell
@afzalex 프로세서 생성 클래스가 기존 클래스 정의를 바꿀 수 있습니까? 나는 그것이 할 수 없다는 인상 아래에 있었다. – Hounshell