@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface Log { String value(); } @SupportedAnnotationTypes("com.example.Log") @SupportedSourceVersion(SourceVersion.RELEASE_8) public class LogAnnotationProcessor extends AbstractProcessor { @Override public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) { for (Element element : roundEnv.getElementsAnnotatedWith(Log.class)) { String logMessage = element.getAnnotation(Log.class).value(); String logCode = String.format("System.out.println(\"Logging: %s\");", logMessage); // ... System.out.println(logCode); } return true; } } public class MyClass { @Log("Hello World") public void doSomething() { // ... } } logger=com.example.MyLogger Properties properties = new Properties(); properties.load(ClassLoader.getSystemResourceAsStream("klogger.properties")); String loggerClass = properties.getProperty("logger"); MyLogger logger = (MyLogger)Class.forName(loggerClass).newInstance(); Klogger.setLogger(logger);


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