有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用静态工厂方法的java条件调用

这是我的项目结构。我试图使用静态工厂函数来检查对象,然后执行一些操作。我遵循了这个过程

父类:

public abstract class Parent {

    protected static Child1DTO ch1;
    protected static Child2DTO ch2;

    public Parent(Child1DTO ch1) {
        this.ch1 = ch1;
    }

    public Parent(Child2DTO ch2) {
        this.ch2 = ch2;
    }

    protected Parent() {

    }

    public static Child1DTO getCh1() {
        return ch1;
    }

    public static Child2DTO getCh2() {
        return ch2;
    }

    public static Class<?> childType(Object obj) {

        if (obj instanceof Child1DTO) {
                    //do something
            return Child1DTO.class;
        } else if (obj instanceof Child2DTO) {
                    //do something
            return Child2DTO.class;
        }
        return null;
    }
}

孩子们去上课

public class Child1DTO extends Parent {

    private String fName1;
    private String lName1;

    public String getfName1() {
        return fName1;
    }
    public void setfName1(String fName1) {
        this.fName1 = fName1;
    }
    public String getlName1() {
        return lName1;
    }
    public void setlName1(String lName1) {
        this.lName1 = lName1;
    }
}

Child2DTO类:

public class Child2DTO extends Parent{

    private String fName2;
    private String lName2;

    public String getfName2() {
        return fName2;
    }
    public void setfName2(String fName2) {
        this.fName2 = fName2;
    }
    public String getlName2() {
        return lName2;
    }
    public void setlName2(String lName2) {
        this.lName2 = lName2;
    }
}

子类:

public class Child extends Parent {

    public Child(Child1DTO ch1) {
        super(ch1);
    }

    public Child(Child2DTO ch2) {
        super(ch2);
    }

    public static Child test(Object obj) {

        if (obj instanceof Child1DTO) { //is this the correct way to check?
            //do something
            return new Child((Child1DTO) obj);
        } else if (obj instanceof Child2DTO) {//is this the correct way to check?

            //do something
            return new Child((Child2DTO) obj);
        }
        return null;
    }

    public static void main(String args[]) {


        if(childType(ch1).equals(ch1)){
            //do something
        }else if(childType(ch2).equals(ch2)){
            //do something
        }else{
            System.out.println("Failed!");
        }
  }

}

编辑:

Parent类有一个Child类和两个DTO Child1DTOChild2DTO

  1. 我需要在父类或子类中实现条件签入吗
  2. 如何实现与构造函数的条件检查

共 (0) 个答案