方法将其转换为现有的pojo



所以,我有一个类似的pojo:

public class pojo {
String name;
String address;
String email;
// getter's and setter's here...
}

对于一个接收类型对象的方法,我如何将其转换为原始类型,以便使用所有getter和setter。

private void method(Object obj) {
// use get's and set's from the original object of type "pojo"
// instead of the methods from java.lang.Object
}

我真的不知道如何更好地解释,这让我有点困惑。希望你们都能理解。提前感谢

EDIT 1
所以,我没有很好地解释它,因为我有点困惑,我甚至不知道我想做的事情是否可行。但是,在方法内部,我想以某种方式做这样的事情:

public void method(Object obj) {
**Dynamically detect obj type** newObj = (obj type) obj;
// I want to do like this, because this method will never know what 
// object type I am passing.
// I will have more than 10 pojo's and I wanted the method to detect
// and create them dynamically.
}

您可以使用铸造

在这里,我们在一个空构造函数中创建一个Pojo对象,然后将其作为对象发送到方法

public static void main(String[] args) {

Pojo pojo=new Pojo();
pojo.method(pojo);
System.out.println(pojo.getName());
}

我们的方法将obj作为一个通用的java对象,并将其作为一个Pojo对象放入已经是Pojo对象的测试中(我们这样做是为了使用Pojo类的方法(。然后我们将其设置为一个名称。

public class Pojo {

private String name;
private String address;
private String email;

public Pojo(){}

public Pojo(String name,String address,String email)
{
this.name=name;
this.address=address;
this.email=email;

}



public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

public void method(Object obj) {
Pojo test = (Pojo)obj;
test.setName("avi");
}
}

在转换前使用instanceof进行测试。

Pojo Pojo=Pojo的obj实例?(Pojo(Pojo:新Pojo((;

尝试com.fasterxml.jackson.databind.ObjectMapper

Pojo pojo = new ObjectMapper().readValue(object, Pojo.class)

这会将您的对象转换为pojo类型,因此可以访问pojo中的所有方法。

您可以简单地使用instanceof运算符来检测对象的类型。

如果您的意图是动态地创建对象,那么就进行反射来创建对象。

public void method(Object obj) throws Exception {
Class<?> clz = obj.getClass();
Object newObj = clz.newInstance();
**Dynamically detect obj type** newObj = (obj type) obj;
// I want to do like this, because this method will never know what 
// object type I am passing.
// I will have more than 10 pojo's and I wanted the method to detect
// and create them dynamically.
}

由于方法返回类型为void,因此必须在该方法内部执行业务逻辑,根据不同的对象类型,需要应用业务逻辑。然后显式检查对象类型以在if块中执行任务。

必须使用强制转换。

private void method(Object obj) {
Pojo p = (Pojo) obj;

//Now you can use the pojo methods.
p.getName(); //And other methods depending on what methods you have defined in Pojo
}

编辑:或者您可以使用Java反射API来获取类的名称,然后使用适当的强制转换。

要获取类的名称,请使用以下命令:Class c = obj.getClass()

然后,您可以使用开关案例,然后使用适当的铸造。

相关内容

  • 没有找到相关文章