如何在初始化后将Java对象设置为final

And*_*eaF 2 java

我有一个对象:

Object obj = create();
Run Code Online (Sandbox Code Playgroud)

...我需要设置此Object的一些属性:

obj.setParam("7696969", 0x506);
Run Code Online (Sandbox Code Playgroud)

在此过程之后,我需要确保obj无法修改.

有没有办法设置objfinal不创建另一个final Object副本obj

Ami*_*ani 11

考虑将Builder设计模式用于新创建的对象.

FooBuilder builder = new FooBuilder();
builder.setParam(...);
builder.setBar(...);

final Foo myFoo = builder.build();
Run Code Online (Sandbox Code Playgroud)

请注意,尽管myFoo是最终的,但它的成员字段可能不是.你不应该忘记宣布那些决赛.

  • 顺便说一下,我认为使用建立者调用链更优雅,例如:Foo myFoo = Foo.builder().withParam(...).withBar(...).build(); (4认同)