gpt4 book ai didi

java - 有没有办法在 Kotlin 中继承构造函数?

转载 作者:行者123 更新时间:2023-11-30 10:04:51 26 4
gpt4 key购买 nike

我有一个 Parent 类,它被很多子类扩展,我想避免在每个子类中复制长构造函数,因为它总是相同的。

open class Parent(arg1: Any, arg2: Any, arg3: Any...)

class ChildA(arg1: Any, arg2: Any, arg3: Any...): Parent(arg1, arg2, arg3...)
class ChildB(arg1: Any, arg2: Any, arg3: Any...): Parent(arg1, arg2, arg3...)
[...]

有没有一种方法可以继承构造函数或者在 Parent 上实现的函数来实例化一个 Child 类?

编辑

我的期望是实现 Child 类而不必定义其构造函数。原因是我有大约 15 个 child ,每个参数都有一个可选值,所以生成的代码不是那么漂亮。

最佳答案

如果总是一样(或者只是扩展),你可以创建一个类来保存参数:

data class ConstructorParams(arg1: Any, arg2: Any, arg3: Any...)

open class Parent(params: ConstructorParams)

class ChildA(params: ConstructorParams) : Parent(params)

class ChildB(params: ConstructorParams, extraParam: Int) : Parent(params)

您可以向它添加一个辅助函数以避免在实例化类时显式ConstructorParams,但它有一个性能折衷(虽然这个版本不适用于Child2):

inline fun <reified T : Parent> create(arg1: Any, arg2: Any, arg3: Any...) = 
T::class.primaryConstructor.call(ConstructorParams(arg1, arg2, ...))

create<Parent>(1, 2, "")

关于java - 有没有办法在 Kotlin 中继承构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55647582/

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