首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >kotlin错误消息“找不到方法'void <init>()‘”

kotlin错误消息“找不到方法'void <init>()‘”
EN

Stack Overflow用户
提问于 2021-08-21 09:08:41
回答 1查看 119关注 0票数 0

我在学习by关键字。我了解到,当C委托aProp并实现B,而A重写bMeth并实现B(C的实例)时,当我编写以下代码进行实验以确认这一事实时,.bMeth与被A重写的bMeth、A类型的顶级属性aProp、接口B和B的bMeth函数以及类C.so执行的操作相同,我预计输出将是AClassf1 AClassf2 AClassf3,但输出是

代码语言:javascript
复制
Exception in thread "main" java.lang.NoSuchMethodError: learn1.AClass: method 'void <init>()' not found
    at learn1.BClass.<init>(Experiment.kt:21)
    at learn1.ExperimentKt.main(Experiment.kt:6)

为什么我会收到这条消息?以下代码:

代码语言:javascript
复制
package learn1

fun main(args : Array<String>) {
    val bClass = BClass()
    bClass.f1()
    bClass.f2()
    bClass.f3()
}
interface AInter{
    fun f1() = println("AInterf1")
    fun f2()
    fun f3()
}
class AClass : AInter{
    override fun f1() = println("AClassf1")
    override fun f2() = println("AClassf2")
    override fun f3() = println("AClassf3")
}
class BClass(val aClass : AClass = AClass()) : AInter by aClass
EN

回答 1

Stack Overflow用户

发布于 2021-08-21 09:22:06

您的代码可以很好地编译和运行on the playground,并且如预期的那样输出:

代码语言:javascript
复制
AClassf1
AClassf2
AClassf3

你是如何编译和运行这些代码的?

当您针对其他类编译代码时,此错误通常是二进制不兼容错误,但随后您尝试在类路径上使用该类的不同版本来运行它。

在您的特定情况下,它告诉您在运行B的构造函数时(可能是在为A创建默认值时),它找不到类A的构造函数(<init>是构造函数)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68871634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档