有没有办法将Object数组转换为java类?,
示例:我有一个班级" Person"使用下一个属性:姓名,年龄,地址。我有一个Object []:[1]:" Peter",[2]:20,[3]:" California 130"。 我想做这样的事情:
Person p = new Person();
Object[] o = new Object[2];
p = (Person) o;
我必须逐个设置值,例如:
p.setName((String)o[0]);
有办法吗?
此致
答案 0 :(得分:0)
您正在尝试让编译器将Object数组自动转换为带有字段的类,这是不可能的。相反,你可以创建一个构造函数,该构造函数接受一个对象数组,然后将数组中的每个项目分配到类的字段中,但是虽然可以这样做,但它有一个糟糕的代码味道。最好避免完全使用Object数组,即包含不同类型项的数组。而是处理具有适当和实际类型的字段和参数,并将正确键入的项传递到类的构造函数中。即,
public Person(String name, int age, String address) {
this.name = name;
this.age = age;
this.address = address;
}
答案 1 :(得分:0)
尝试这样的事情:
Person convert(Object[] o){
String name = (String) o[0];
int age = (int) o[1];
String address = (String) o[2];
Person p = new Person(name, age, address);
return p;
}
此方法请求此Object []并返回具有该信息的人。
答案 2 :(得分:0)
你不能这样做,因为这会导致ClassCastException
被抛出。原因是因为继承和is-a的关系。
每个Person
对象都是Object
,每个String
对象的类型为Object
。然而,事实恰恰相反。这就像说每匹马都是哺乳动物,但不是每匹马都是马。
答案 3 :(得分:0)
在person类中创建一个方法(例如setAttributes(Object [])),从数组值设置person属性。