2017-04-11 9 views
0

私はロンボク、リスト/マップのようなコンテナのparamsのクローンや深いコピーを実行セッターを生成するかどうかを上の任意のドキュメントを見つけることができませんでした。誰かが確認できますか?簡単なテストを実行するはロンボク@Dataはセッターがマップのようなメンバーオブジェクトにdeepcopy行い、生成していますか?

lombok Getter/Setter

+1

は、これは単なるテストするのは簡単ではないでしょうか? – CollinD

+0

はあなたのためにたぶん@CollinDが、それをテストする方法を答え、そして学んでいる他の人のためのテスト結果を表示するほうがよいのではないでしょうか? OPは自分で確認することができますので、私は@CollinDに同意 – caiocpricci2

+0

が、それは/私がオフトピックとして、この質問を閉じるために投票しています自分自身のいずれかのテストを書いたり、あなたのIDE「delombok」を使用する機能 –

答えて

1

(予想通り、本当に、確実に深いコピーの変数ので、任意の可能なタイプは(不可能/かなり難しいでしょうか?)に進むディープコピーが存在しないことを示しています完璧に働く)。

Lombok'dクラス

@Data 
public class Foo { 
    private Map<Object, Object> bar; 
} 

そして、これらのアサーションはすべて合格していること

Foo foo = new Foo(); 
Map<Object, Object> bar = new HashMap<>(); 
foo.setBar(bar); 
bar.put("foo", "bar"); 
assert foo.getBar() == bar : "getBar() and bar do not share the same memory location (aren't the same object)"; 
assert foo.getBar().get("foo").equals("bar") : "Calls to put(...) aren't persisted after setBar(...) call."; 

注意を、テストするので、コピーが簡単なオブジェクト参照ではなく、ディープコピーであることは明らかです。

関連する問題