Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从2个不同的POJO传递变量?_Java_Oop_Abstract Class_Pojo - Fatal编程技术网

Java 如何从2个不同的POJO传递变量?

Java 如何从2个不同的POJO传递变量?,java,oop,abstract-class,pojo,Java,Oop,Abstract Class,Pojo,我得到了2个POJO,它们被传递到一个HttpEntity并转换为json 在传递它们之前,我需要一个变量,该变量位于两个POJO中,由于API的需要,具有不同的名称,因此我无法更改它们 在POJO定义(如中所述)中,没有强制转换和OOP的最佳方式是什么 抽象pojo public abstract class Pojo{ //some common variables //setter getters } 波乔内 public class PojoOne extends Pojo{ p

我得到了2个POJO,它们被传递到一个HttpEntity并转换为json

在传递它们之前,我需要一个变量,该变量位于两个POJO中,由于API的需要,具有不同的名称,因此我无法更改它们

在POJO定义(如中所述)中,没有强制转换和OOP的最佳方式是什么

抽象pojo

public abstract class Pojo{

//some common variables
//setter getters

}
波乔内

public class PojoOne extends Pojo{

private String id;

//setter getter for id

}
波佐托

public class PojoTwo extends Pojo{

private String identifier;

// setter getter for identifier
}

public class SomeOtherClass {

public void getIdForUse(Pojo pojo){

String s = pojo. // How should this be to have ability to get both id and identifier

}

}

向公共超类添加公共方法:

public abstract class Pojo {

    public abstract String getId();

    // some common variables
    // setter getters
}

public class PojoOne extends Pojo {

    private String id;

    @Override
    public String getId() {
        return id;
    }

    //setter for id
}

public class PojoTwo extends Pojo {

    private String identifier;

    // setter getter for identifier

    @Override
    public String getId() {
        return identifier;
    }
}

在抽象类
Pojo
中定义抽象方法
getId()
并在两个子类中实现它。然后在
SomeOtherClass
中从
Pojo
调用
getId()
。其缺点是,将来创建的每个子Pojo都必须重写getId(),即使它们没有id或标识符。是的,它是。您可以
返回null
例如在这种情况下。@YavuzDoğan那么getIdForUse()不应该将Pojo作为参数,而是一个提供getId()方法的更具体的类或接口,因为它需要其参数具有ID。