如何在java8中将对象数组转换为用户定义的对象

时间:2018-06-07 10:52:11

标签: java

我有一个包含一些值的对象数组。我想将这个对象数组转换为用户定义的自定义类。

EX : Object[] obj = new Object[4];
     obj[0] = "one";
     obj[1] = "two"; 

通过使用java8的stream api将obj [0]设置为setFName并将obj [1]设置为setLName,可以将此对象转换为Employee对象。我尝试了几种方法,但收到错误。

输出

Employee e = Stream.of(Obj).map().....

类似上面的内容

1 个答案:

答案 0 :(得分:1)

如果您需要将Object[]转换为Employee - 只需直接执行:

Employee e  = new Employee();
e.setFirstName(obj[0]);
e.setLastName(obj[1]);

您可能需要一个接受Object[]

的特殊构造函数
public Employee(Object[] that){
    firstName = obj[0];
    lastName = obj[1];
}

如果您真的想出于某种原因使用java-8中的内容,可以使用Optional

Employee e = Optional.of(obj).map(o -> { 
     Employee tmp = new Employee(); 
     tmp.setFirstName(o[0]);
     tmp.setLastName(o[1]);
     return tmp; 
}).get();

但这并没有给你任何优于构造函数的优势,而且更令人困惑。即使你有Optional的拷贝构造函数变体,只有当obj可能为null时才有意义:

Employee e = Optional.of(obj).map(o -> new Employee(o))
                     .orElseGet(() -> some default value);