- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在实现注释处理库,该库使用基于具有特定注释的类的 Java Poetr 生成代码。
为了也使用 kotlin 编写的类,我在示例项目中切换到 kapt 而不是 apt。它与带注释的 java 类一起工作得很好。 Bun kotlin-classes 有不同的方法来访问类字段:应该使用 getter 和 setter。
有没有办法确定给定的类(更具体地说 - 不是一个类,而是一个 TypeElement - 因为这是在编译之前发生的)是 java 类还是用 kotlin 编写的?基于此,我可以编写生成字段访问或 getters 使用的访问的代码。
最佳答案
理论上,任何从 kotlin 编译的类都会用 kotlin.Metadata
进行注释。您可以使用 TypeElement
上的 getAnnotation
方法来检查该注释是否存在,以验证它们是否是用 kotlin 编写的。
val metaDataClass = Class.forName("kotlin.Metadata").asSubclass(Annotation::class.java)
val isKotlinClass = <TypeElement>.getAnnotation(metaDataClass) != null
在处理环境中无需 kotlin 标准库即可工作的版本:
elementUtils.getAllAnnotationMirrors(typeElement).any {
elementUtils.getBinaryName(it.annotationType).contentEquals("kotlin.Metadata")
}
关于java - kotlin注解处理: check if given TypeElement is from kotlin-class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47873480/
我的库中有几个包,其中包含注释和基类。我在这个问题的上下文中扩展了 javax.annotation.processing.AbstractProcessor 。 有没有办法获取包中声明的所有类型的
我正在编写自定义注释处理器。虽然我可以处理没有泛型类型的类类型,但无法获取泛型类型的实际类型。 MyBase 界面 interface MyBase { void method1(S, T); }
我正在编写一个在 javac 中运行的注解处理器。它扫描带注释的类并生成包含类名的资源文件。这些名称将在运行时使用,以便能够获得 Class感谢Class.forName(String) . 如何从
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
getInterfaces() TypeElement 的方法只返回元素直接实现的接口(interface)。是否有一种简单的方法来查找给定的 TypeElement 是否间接实现了给定的接口(int
我有一个类: public class StartPagePresenter extends AbstractPresenter { ... } 使用 Java Annotation Processi
我正在开发一个带有注释处理的代码生成器,并将逻辑分为 2 个步骤: 分析带注释的元素并创建数据模型,以及 使用数据模型使用 JavaPoet 生成代码。 在大多数情况下,注释处理 API 为我们提供了
我正在实现注释处理库,该库使用基于具有特定注释的类的 Java Poetr 生成代码。 为了也使用 kotlin 编写的类,我在示例项目中切换到 kapt 而不是 apt。它与带注释的 java 类一
我不明白如何在注释处理器中检索枚举值。 我的注释是自定义 Java Bean Validation 注释: @StringEnumeration(enumClass = UserCivility.
使用 Java 注释处理器我有以下类型: @NameToken(value={"startPage"}) public interface MyProxy extends Proxy { } 和: p
我正在编写一个注释处理器,并且我有一个带有 @Inherited 的注释“a”。这意味着,对于代表类“c”的任何元素“e”,该类“c”扩展了我的注释实际存在的类,我将得到 e.getAnnotatio
我编写了一个接受 java.lang.Class 对象的注释。我想将带注释的类和注释值作为键值对保存在文件中,但就我而言,只有当注释值类可从带注释的类分配时,这才有效。 现在,在我的注释处理器中,我从
我是一名优秀的程序员,十分优秀!