java - Chain of "instanceof' s”组装一个对象

标签 java setter instanceof

我面临以下代码:

public class BaseGroup {

    private Group1 group1;
    private Group2 group2;
    private Group3 group3;

    public void setGroup (IGroup group) {

        if(group instanceof Group1) {
            setGroup1((Group1) group);
        } else if(group instanceof Group2) {
            setGroup2((Group2) group);
        } else {
            setGroup3((Group3) group);
        }
    }

    public Group1 getGroup1() {
        return group1;
    }

    public void setGroup1(Group1 group1) {
        this.group1 = group1;
    }

    public Group2 getGroup2() {
        return group2;
    }

    public void setGroup2(Group2 group1) {
        this.group2 = group2;
    }

    public Group3 getGroup3() {
        return group3;
    }

    public void setGroup3(Group3 group1) {
        this.group3 = group3;
    }

}   

而BaseGroup类就是这样使用的。

BaseGroup baseGroup = New BaseGroup();
basegroup.setGroup(group);

我的问题是这个“instanceof”链调用各自的 setter 来组装 BaseGroup 对象。执行此操作的更好方法是什么?

最佳答案

你可以添加一个方法到

interface IGroup {
    public void addToGroup(BaseGroup bg);
}

class Group1 implements IGroup {
    public void addToGroup(BaseGroup bg) { bg.setGroup1(this); }
}
// etc for Group2 and 3.


IGroup group;
BaseGroup bg;
group.addToGroup(bg);

关于java - Chain of "instanceof' s”组装一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8243345/

相关文章:

java - 以编程方式设置时,广告尺寸和广告单元 ID 必须在 loadAd 之前设置

ios - 类的 Setter 未被调用

Kotlin 会自动生成 Getter 和 Setter,但为什么?

java - 当我在另一个静态类下使用静态类时验证 instanceof

Java静态数组修改

java - 如何使用 jdbc 从数据库加载对象列表

java - XML 未使用 XAS 解析器通过 XSD 进行验证

java - head=head.getNext() 和 head=current.getNext() 有什么区别?

Java - null instanceof Object 评估为真和假

java - java中带有接口(interface)的instanceof运算符