所以,我有一个类似的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()
然后,您可以使用开关案例,然后使用适当的铸造。