有没有小伙使用过AbstractProcessor呀,如何在里面获取被注解修饰的类名
您的每一个用心回答,都会让这个世界变得更美好一些!
@Override public boolean process(Set<? extends TypeElement> set, RoundEnvironment roundEnvironment) { //ActivityBinding这个注解作用域:@Retention(RetentionPolicy.CLASS) try { Set<? extends Element> elements = roundEnvironment.getElementsAnnotatedWith(ActivityBinding.class); for (Element element : elements) { if (element.getKind() != ElementKind.CLASS) { continue; } mMessager.printMessage(Diagnostic.Kind.NOTE, "===element: " + element); //扫描全部被注解的class createMvpHelperClass((TypeElement) element); } } catch (Exception e) { e.printStackTrace(); mMessager.printMessage(Diagnostic.Kind.ERROR, "===e: " + e); } System.out.println("================process end==========================="); return false; }
private void createMvpHelperClass(TypeElement typeElement) { //在class中查是否存在注解。如果不存在结束 ActivityBinding annotation = typeElement.getAnnotation(ActivityBinding.class); if (annotation == null) { return; } //我的注解里面定义了int值放 布局id,这里取出来 int layoutId = annotation.layout(); // 获取包名 String packageName = mElementUtils.getPackageOf(typeElement).getQualifiedName().toString(); // Java类名,到这里,就是你需要的被注解的java的类名了。方法返回的是全路径,这里进行了截取 String className = typeElement.getQualifiedName().toString().substring(packageName.length() + 1);
您的每一个用心回答,都会让这个世界变得更美好一些!