Java 如何在Kotlin中为变量分配不同的类型并使用它调用函数?
我来自python,是kotlin/java的新手 我想知道如何为变量指定不同的注释并用它调用函数Java 如何在Kotlin中为变量分配不同的类型并使用它调用函数?,java,kotlin,annotations,Java,Kotlin,Annotations,我来自python,是kotlin/java的新手 我想知道如何为变量指定不同的注释并用它调用函数 var metadata = field.getAnnotation(AnnotationA::class.java) ?: field.getAnnotation(AnnotationB::class.java) if (metadata != null) { someFunction(metadata) // which has two overrided functions
var metadata = field.getAnnotation(AnnotationA::class.java) ?: field.getAnnotation(AnnotationB::class.java)
if (metadata != null) {
someFunction(metadata)
// which has two overrided functions with AnnotationA and AnnotationB
// looks like someFunction(AnnotationA)
// someFunction(AnnotationB)
}
编译器说“使用提供的参数无法调用以下函数。”
它说元数据被强制转换为“注释!”
如何将AnnotationA或AnnotationB设置为元数据并根据类型使用重写的someFunction?您必须尝试逐个调用每个函数。在java或kutin中,函数不会像java那样被调度,也可以根据注释而不是尝试调用不同的函数,可以考虑完全改变设计,编写一个基于注释生成代码的注释处理器(Java或Kotlin)。我希望我能用更少的python代码来实现它。正如您所说,我创建了按类型调用每个函数的when表达式,它运行良好。我认为制作注释处理器是一个很好的方法。谢谢你的主意!!仅供参考,直接从一种语言翻译到另一种语言通常是个坏主意:)同意你的看法。几天前,我学习了kotlin语法并阅读了文档,但实际上,将我的设计过程从python转换为kotlin并不是一件容易的事:)