Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Kotlin中为变量分配不同的类型并使用它调用函数?_Java_Kotlin_Annotations - Fatal编程技术网

Java 如何在Kotlin中为变量分配不同的类型并使用它调用函数?

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

我来自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 with AnnotationA and AnnotationB
    // looks like someFunction(AnnotationA)
    //            someFunction(AnnotationB)
}
编译器说“使用提供的参数无法调用以下函数。” 它说元数据被强制转换为“注释!”


如何将AnnotationA或AnnotationB设置为元数据并根据类型使用重写的someFunction?

您必须尝试逐个调用每个函数。在java或kutin中,函数不会像java那样被调度,也可以根据注释而不是尝试调用不同的函数,可以考虑完全改变设计,编写一个基于注释生成代码的注释处理器(Java或Kotlin)。我希望我能用更少的python代码来实现它。正如您所说,我创建了按类型调用每个函数的when表达式,它运行良好。我认为制作注释处理器是一个很好的方法。谢谢你的主意!!仅供参考,直接从一种语言翻译到另一种语言通常是个坏主意:)同意你的看法。几天前,我学习了kotlin语法并阅读了文档,但实际上,将我的设计过程从python转换为kotlin并不是一件容易的事:)