我写了如下简单的代码。基本上在setString
,我输入" Sentence"作为字符串,在getString
中,它应该返回字符串。当我在Junit中测试时,它表示getString
返回null而不是"句子"。
public class MyString implements MyStringInterface{
public String str;
//Sets the value of the current string
public void setString(String str){
str = "Sentence";
}
// Returns the current string
public String getString(){
return str;
}
}
答案 0 :(得分:5)
public void setString(String str){
str = "Sentence";
}
在您致电str = "Sentence"
的代码中,您实际上正在更改本地变量。
在setString
方法中,您将值设置为方法局部变量,而不是实例变量。因此,您的实例变量值不会被更改,它将具有默认值null。
您可以按如下方式更改方法
public void setString(String str){
this.str = "Sentence"; // this.str = str;
}
P.S
在您的代码中,您将在setter方法中设置修复值。这是一个非常糟糕的做法,你不需要有一个制定者来做这样的事情。
答案 1 :(得分:0)
问题是setString()
应该是
public void setString(String str){
this.str = str;
}
然后你需要从主方法中调用
MyString s = new MyString();
s.setString("Sentence");
答案 2 :(得分:0)
public void setString(String str){
str = "Sentence";
}
这里" str"在方法体中指的是字符串变量" str"它作为参数传递给方法。如果您有一个与参数名称同名的实例变量,请使用
this.str = str;
"这"指的是self,因此this.str引用实例变量。在上面的例子中,我们覆盖了变量,因此没有将值设置为实例变量。
否则你可以这样做:
public void setString(String formalParamStr){
str = formalParamStr;
}
现在按如下方式调用方法:
instanceVar.setString("Sentence");