- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试理解 JavaCompiler.getTask()
。我了解所有参数,除了倒数第二个名为 classes
的参数。 Javadoc 阅读:
class names (for annotation processing), null means no class names
但我不明白他们的意思。网上找了很多网站提到JavaCompiler,但是都没有解释这个参数。有什么想法吗?
最佳答案
我相信当您想在二进制文件上运行注释处理器时可以使用它。这些类将是您要处理的类型。
演示代码:
public class MyProcessor extends AbstractProcessor {
public static @interface X { String value(); }
@X("Hello") public static class Y {}
@Override public boolean process(Set<? extends TypeElement> annotations,
RoundEnvironment roundEnv) {
for (Element element : roundEnv.getRootElements()) {
X x = element.getAnnotation(X.class);
if (x != null) System.out.println(x.value());
}
return true;
}
@Override public Set<String> getSupportedAnnotationTypes() {
return new HashSet<String>(Arrays.asList(X.class.getCanonicalName()));
}
@Override public SourceVersion getSupportedSourceVersion() {
return SourceVersion.RELEASE_6;
}
public static void main(String[] args) {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
List<String> classes = Arrays.asList(Y.class.getCanonicalName());
List<String> options = Arrays.asList("-processor", MyProcessor.class
.getCanonicalName());
CompilationTask task = compiler.getTask(null, null, null, options, classes,
null);
task.call();
}
}
上面的代码打印出"Hello"
。
关于java - JavaCompiler.getTask()的 "classes"参数如何使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1252535/
我正在使用 JavaCompiler 编译此类,如果我传递给编译的 String 是这样的,它会给我一个编译错误: public class className extends classNeed{
我正在尝试理解 JavaCompiler.getTask()。我了解所有参数,除了倒数第二个名为 classes 的参数。 Javadoc 阅读: class names (for annotatio
本文整理了Java中com.zsmartsystems.zigbee.app.discovery.ZigBeeNodeServiceDiscoverer.getTasks()方法的一些代码示例,展示了
我有一个执行器,负责使用来自 ArrayBlockingQueue 的消息。 new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MIL
从昨天 3 月 11 日开始,我开始看到 SecurityException 崩溃的高峰。 (请参阅下面的堆栈跟踪。)其他人是否也看到此异常?搜索没有出现任何结果。 我的问题是升级到更新版本的 Pla
当我们在构建服务器上从 jenkins 运行构建时,出现以下异常: java.lang.LinkageError: loader constraint violation: when resolvin
我是一名优秀的程序员,十分优秀!