dポイントプレゼントキャンペーン実施中!

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

A 回答 (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());
}
}
    • good
    • 0

ご質問の内容が分かりにくいです。



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

この回答への補足

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

補足日時:2010/10/02 14:34
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!