• ベストアンサー

javaのprivate finalメンバについて、

javaのprivate finalメンバについて、 public void setMember(SomeClass obj){ getMember.setA(obj.getA()); getMember.setB(obj.getB()); } のような値をコピーするだけのsetterを作るのはおかしいですか? finalなのは同一性を保証したいからつけていて、中の値は変えたいのですが、 参照する側にとってsetterは通常参照の置き換えを意味して分かりにくくなるのではと気になりました。 値をコピーする場合のsetterの名前の付け方などあるのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

getMember.setA(obj.getA()); // × member.setA(obj.getA());   // ○ class SomeThing { private String name; private int id; public String getName() { return name; } public int getId() { return id; } public void setName(String name) { this.name = name; } public void setId(int id) { this.id = id; } } class SomeThingUser { private final SomeThing member = new SomeThing(); public SomeThing getMember() { return member; } public void setMember(SomeThing obj){ member.setName( obj.getName() ); member.setId( obj.getId() ); } } public class SomeThingUserChecker { public static void main(String[] args) { SomeThingUser someThingUser = new SomeThingUser(); System.out.println(someThingUser.getMember().getName()); System.out.println(someThingUser.getMember().getId()); SomeThing someThing = new SomeThing(); someThing.setName("someThing"); someThing.setId(1); someThingUser.setMember(someThing); System.out.println(someThingUser.getMember().getName()); System.out.println(someThingUser.getMember().getId()); } }

その他の回答 (1)

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

ご質問の内容が分かりにくいです。 ・private final指定されているのは何でしょうか? SomeClassのメンバー? 他のクラスのメンバーになっているSomeClass? ・getMemberというのは何でしょうか? get~という名前やsetMember()との対比からgetterかな?と思ってしまいますが、どうもメソッドではないようです。 ・setMember()メソッドはSomeClassのメソッドでしょうか、それとも他のクラス?

LangFan
質問者

補足

private final SomeClass member; SomeClass getMember(); void setMember(SomeClass obj);

関連するQ&A