このサイトからチュートリアルを読んでいます。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
これは、このパラメーターをローカル変数に割り当てても、まだ機能するということですか?