gpt4 book ai didi

kotlin - 如果我不希望Kotlin中派生类调用基类的构造函数,该怎么办?

转载 作者:行者123 更新时间:2023-12-02 13:12:09 25 4
gpt4 key购买 nike

有什么方法可以创建Derived实例,但不能调用Base的构造函数?

open class Base(p: Int)

class Derived(p: Int) : Base(p)

最佳答案

你真的可以做到

import sun.misc.Unsafe

open class Base(p: Int){
init {
println("Base")
}
}

class Derived(p: Int) : Base(p){
init {
println("Derived")
}
}

fun main() {
val unsafe = Unsafe::class.java.getDeclaredField("theUnsafe").apply {
isAccessible = true
}.get(null) as Unsafe

val x = unsafe.allocateInstance(Derived::class.java)

println("X = $x")
}

但是请不要这样做,该解决方案是一种低级机制,旨在仅由核心Java库而不是标准用户使用。如果使用OOP,则会破坏其逻辑。

关于kotlin - 如果我不希望Kotlin中派生类调用基类的构造函数,该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59390294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com