gpt4 book ai didi

java - 实现一个不仅仅是设置变量的 Scala 构造函数

转载 作者:太空狗 更新时间:2023-10-29 22:51:35 25 4
gpt4 key购买 nike

大多数时候,一个类的构造函数只是获取它的参数值并使用它们来设置实例变量:

// Java
public class MyClass {
private int id;

public MyClass(int id) {
this.id = id;
}
}

所以我理解了 Scala 的默认构造函数语法的效率......只需在类名旁边的括号中声明一个变量列表:

// Scala
class MyClass(id: int) {
}

但是,除了简单地将参数插入实例变量之外,您还需要一个构造函数来实际执行 STUFF 的情况呢?

// Java
public class MyClass {
private String JDBC_URL = null;
private String JDBC_USER = null;
private String JDBC_PASSWORD = null;

public MyClass(String propertiesFilename) {
// Open a properties file, parse it, and use it to set instance variables.
// Log an error if the properties file is missing or can't be parsed.
// ...
}
}

这在 Scala 中是如何工作的?我可以尝试为这个构造函数定义一个实现,如下所示:

// Scala
class MyClass(propertiesFilename: String) {
def this(propertiesFilename: String) {
// parse the file, etc
}
}

...但是我得到一个编译错误,提示构造函数被定义了两次。

我可以通过使用无参数默认构造函数来避免这种冲突,然后将上面的声明声明为重载的辅助构造函数。但是,如果您确实需要“唯一”构造函数,并且需要它来执行某些操作,那又如何呢?

最佳答案

您可以在类主体中简单地执行这些操作。

Class Foo(filename: String) {
val index = {
val stream = openFile(filename)
readLines(stream)
...
someValue
}
println(“initialized...“)
}

关于java - 实现一个不仅仅是设置变量的 Scala 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6375961/

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