I'm facing the following code:
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;
    }
}   
And the BaseGroup class is used in this way.
BaseGroup baseGroup = New BaseGroup();
basegroup.setGroup(group);
My question is about this chain of "instanceof's" calling the respective setters to assemble the BaseGroup object. What is the better approach to do this?
 
     
     
     
     
     
     
    