我正在阅读本网站的教程。http://tutorials.jenkov.com/java-unit-testing/matchers.html
相信作者很有经验。我看到了这样的代码。我还看到其他人总是喜欢将方法的参数分配给变量,然后在方法中使用它。这就是这条线。protected Object theExpected = expected;
谁能告诉我,这种编码风格有什么好处?这是试图避免改变对象状态还是什么?
如果参数不是对象而是原始变量怎么办。
如果它是像 String 这样的不可变对象呢?谢谢你。
public static Matcher matches(final Object expected){
return new BaseMatcher() {
protected Object theExpected = expected;
public boolean matches(Object o) {
return theExpected.equals(o);
}
public void describeTo(Description description) {
description.appendText(theExpected.toString());
}
};
}
这是更新
我刚刚又做了一个测试,看看我们得到对象后这个参数是否仍然可以访问。
package myTest;
public class ParameterAssignTest {
public static void main(String[] args) {
MyInterface myClass = GetMyClass("Here we go");
System.out.println(myClass.getValue());
System.out.println(myClass.getParameter());
}
public static MyInterface GetMyClass(final String myString){
return new MyInterface() {
protected String stringInside = myString;
@Override
public String getValue() {
return stringInside;
}
@Override
public String getParameter() {
return myString;
}
};
}
}
输出:
Here we go
Here we go
那么这是否意味着即使我们将此参数分配给局部变量它仍然有效?