<dependency> <groupId>org.ow2.util</groupId> <artifactId>ow2-utilities-annotations</artifactId> <version>1.0.0</version> <scope>provided</scope> </dependency> @Retention(RetentionPolicy.SOURCE) @Target(ElementType.FIELD) public @interface GenerateAccessors { } public class AccessorsProcessor extends AbstractProcessor { @Override public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) { for (Element element : roundEnv.getElementsAnnotatedWith(GenerateAccessors.class)) { String getter = "public " + element.asType().toString() + " get" + capitalize(element.getSimpleName().toString()) + "() { return " + element.getSimpleName().toString() + "; }"; String setter = "public void set" + capitalize(element.getSimpleName().toString()) + "(" + element.asType().toString() + " " + element.getSimpleName().toString() + ") { this." + element.getSimpleName().toString() + " = " + element.getSimpleName().toString() + "; }"; processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, getter); processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, setter); } return true; } private String capitalize(String str) { return str.substring(0, 1).toUpperCase() + str.substring(1); } @Override public Set<String> getSupportedAnnotationTypes() { return Set.of(GenerateAccessors.class.getName()); } } <build> <plugins> <plugin> <groupId>org.bsc.maven</groupId> <artifactId>maven-processor-plugin</artifactId> <version>2.3.1</version> <executions> <execution> <id>process</id> <goals> <goal>process</goal> </goals> </execution> </executions> <configuration> <processors> <processor>com.example.AccessorsProcessor</processor> </processors> </configuration> <dependencies> <dependency> <groupId>org.ow2.util</groupId> <artifactId>ow2-utilities-annotations</artifactId> <version>1.0.0</version> </dependency> </dependencies> </plugin> </plugins> </build> public class MyClass { @GenerateAccessors private String name; // ... }


上一篇:
下一篇:
切换中文