如何将Object []转换为java类

时间:2016-06-17 22:04:22

标签: java arrays class object

有没有办法将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]);

有办法吗?

此致

4 个答案:

答案 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属性。