gpt4 book ai didi

java - JavaCompiler.getTask()的 "classes"参数如何使用?

转载 作者:搜寻专家 更新时间:2023-10-31 20:31:22 25 4
gpt4 key购买 nike

我正在尝试理解 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com