gpt4 book ai didi

java - 在 Scala 中,如何子类化具有多个构造函数的 Java 类?

转载 作者:IT老高 更新时间:2023-10-28 20:24:20 24 4
gpt4 key购买 nike

假设我有一个带有多个构造函数的 Java 类:

class Base {
Base(int arg1) {...};
Base(String arg2) {...};
Base(double arg3) {...};
}

如何在 Scala 中扩展它并仍然提供对 Base 的所有三个构造函数的访问?在 Scala 中,子类只能调用它的父类(super class)的构造函数之一。我该如何解决这个规则?

假设 Java 类是我无法更改的遗留代码。

最佳答案

很容易忘记一个特征可以扩展一个类。如果你使用 trait,你可以推迟决定调用哪个构造函数,如下所示:

trait Extended extends Base {
...
}

object Extended {
def apply(arg1: Int) = new Base(arg1) with Extended
def apply(arg2: String) = new Base(arg2) with Extended
def apply(arg3: Double) = new Base(arg3) with Extended
}

特征本身可能没有构造函数参数,但您可以通过使用抽象成员来解决这个问题。

关于java - 在 Scala 中,如何子类化具有多个构造函数的 Java 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3299776/

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