Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Scala中,参数和类字段可以使用相同的名称吗_Java_Scala - Fatal编程技术网

Java 在Scala中,参数和类字段可以使用相同的名称吗

Java 在Scala中,参数和类字段可以使用相同的名称吗,java,scala,Java,Scala,在Java中,我通常使用与字段相同的名称调用setter的参数 public void setA(int a){ this.a = a; } 原因是IDE稍后将显示a作为参数名,因此更好地记录它 如何在Scala中实现同样的功能?您不必这样做。创建Scala类时: class A(val a: Int) 您可以“免费”获得访问器。如果将参数声明为var,那么也会得到一个setter。所以,回答你的问题:参数已经是类字段了 val myA = new A(42) myA.a // 4

在Java中,我通常使用与字段相同的名称调用setter的参数

public void setA(int a){
    this.a = a;
}
原因是IDE稍后将显示
a
作为参数名,因此更好地记录它


如何在Scala中实现同样的功能?

您不必这样做。创建Scala类时:

class A(val a: Int)
您可以“免费”获得访问器。如果将参数声明为
var
,那么也会得到一个setter。所以,回答你的问题:参数已经是类字段了

val myA = new A(42)
myA.a  // 42

class B(var b: Int)
val myB = new B(42)
myB.b  // 42
myB.b = 43
myB.b  // 43

java bean的
getXXX
/
setXXX
约定不适用于Scala(在尝试在Scala中使用java库时,这有时是一个问题)。

您不必这样做。创建Scala类时:

class A(val a: Int)
您可以“免费”获得访问器。如果将参数声明为
var
,那么也会得到一个setter。所以,回答你的问题:参数已经是类字段了

val myA = new A(42)
myA.a  // 42

class B(var b: Int)
val myB = new B(42)
myB.b  // 42
myB.b = 43
myB.b  // 43

java bean的
getXXX
/
setXXX
约定不适用于Scala(在Scala中尝试使用java库时有时会出现问题)。

java有四个名称空间(iirc),Scala有两个。您无法做到这一点,尽管您可以看到另一个答案,即为什么这可能不是问题。

Java有四个名称空间(iirc),Scala有两个。您无法做到这一点,尽管您可以看到另一个答案,说明这可能不是问题。

那么如何覆盖getter和setter呢?因此基本上没有办法,您必须使用命名约定。。。mmmmh@gotch4有一种方法:
def age_=(value:Int):Unit=\u age=value
在这里定义setter,您可以在其中放入任何需要的代码。与其说它是一种命名约定,不如说它是一种命名约定?准备好后,请随意接受答案:)那么如何覆盖getter和setter呢?因此基本上没有办法,您必须使用命名约定。。。mmmmh@gotch4有一种方法:
def age_=(value:Int):Unit=\u age=value
在这里定义setter,您可以在其中放入任何需要的代码。与其说它是一种命名约定,不如说它是一种命名约定?准备好后,请随意接受答案:)