kotlin - kotlin 错误消息“方法'无效()' 未找到”
问题描述
我正在学习by
关键字。我了解到,当 C 委托 aProp 并实现 B 并且 A 覆盖 bMeth 并实现 B(C 的实例)时。bMeth 与 A 类 A 和 A 类型的顶级属性 aProp 和接口 B 和 bMeth 函数覆盖的 bMeth 做同样的事情B 类和 C.so 当我编写以下代码进行实验以确认这一事实时,我预期的输出将是 AClassf1 AClassf2 AClassf3 但输出是
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)
为什么我会收到此消息?以下代码:
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
解决方案
您的代码在 playground 上编译并运行良好,并按预期输出:
AClassf1
AClassf2
AClassf3
你是如何编译和运行这段代码的?
当您针对某个其他类编译代码时,此错误通常是二进制不兼容错误,但随后您尝试在类路径上使用该类的不同版本运行它。
在您的特定情况下,它告诉您<init>
在运行 B 的构造函数时(可能在为 A 创建默认值时)找不到类 A 的构造函数(是构造函数)。
推荐阅读
- ios - 是否可以从另一个视图调用 IBAction UIButton?
- node.js - 如何从MongoDB中的数组中删除对象?
- timer - Knife.timer 关于 Lua 语法 - 行为不符合预期
- javascript - 关于连接 React 和 NodeJS express 的问题
- python - 如何检测被阴影遮挡的黄色物体?
- php - 当两个文件的行中有相同的数据时,PHP CSV 合并两个 CSV 文件
- python - 'function' 对象不可迭代
- sql - Postgresql 根据 B 列上的某些条件选择不同的 A 列
- javascript - 不和谐机器人是否被归类为 Web 服务器?
- c# - 如何启动 webApi Asp.net