gpt4 book ai didi

java - Java 转 Scala,如何处理调用父类(super class)构造函数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:27:45 24 4
gpt4 key购买 nike

问题摘要 - 如何将其转换为 Scala 类?

问题 - 多个构造函数调用不同的 super 构造函数

Java 类 -

public class ClassConstExample extends BaseClassExample {
private String xyzProp;
private string inType = "def";
private String outType = "def";
private String flagSpecial = "none";

public ClassConstExample(final String file, final String header, final String inType,
final String outType, final String flag) {
super(file);
init(header, inType, outType, flag);
}

public ClassConstExample(final String file, final String header, final String inType,
final String outType, final String flag, final String mode) {
super(file, mode);
init(header, inType, outType, flag);
}

public ClassConstExample(final String file, final String header, final String flag){
super(file);
//some logic here that's irrelevant to this
...
this.xyxProp = getXYZ(header);
this.flagSpecial = getFlagSpecial(flag);
}
...
}

我一直在尝试将此类的这些构造函数转换为 Scala 大约一天,但我无法在如何处理以下问题上取得任何进展 - (多个构造函数在 Scala 中调用不同的基类构造函数)。有人介意帮我想办法转换这门课吗?我读过一些地方说在 Scala 中使用标准 super 调用是不可能做到这一点的,那么我该如何实现呢?

最佳答案

必须调用主构造函数,因此任何其他构造函数都必须调用主构造函数或将调用主构造函数的另一个构造函数。super 的构造函数在主构造函数中作为继承声明的一部分被调用。这意味着您只能调用一个 super 构造函数。

class BaseClassExample(file: String, mode: String) {
def this(file: String) = this(file, "mode")
}

class ClassConstExample(file: String, header: String, inType: String, outType: String, flag: String, mode: String) extends BaseClassExample(file, mode) {
def this(file: String, header: String, inType: String, outType: String, flag: String) = this(file, header, inType, outType, flag, "mode")
def this(file: String, header: String, flag: String) = this(file, header, "inType", "outType", flag)
}
  • 请注意,BaseClassExample 参数是在主构造函数中定义的。
  • 不要使用父类(super class)的默认值,只需将它们明确地放在子类中(如示例中的“模式”)。
  • 因为必须调用主构造函数,所以不需要从每个构造函数调用 init 方法(只需在主构造函数中调用,甚至直接在主体中调用 init)

关于java - Java 转 Scala,如何处理调用父类(super class)构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50357913/

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