Замените лямбду ссылкой на метод, содержащей новое ключевое слово - PullRequest
0 голосов
/ 24 октября 2018
List<Employee> empListObjDeepCopy = empListRef.stream().map(inv -> new Employee(inv)).collect(Collectors.toList());

Как заменить эту (inv -> new Employee(inv)) лямбду ссылкой на метод.

Полный код ссылки:

package org.learn.copy;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class DeepCopy {
    public static void main(String[] args){
        Employee emp = new Employee();
        emp.setName("Hello");
        emp.setRollNumber("12345");

        Employee emp1 = new Employee();
        emp1.setName("Hi");
        emp1.setRollNumber("123456");

        List<Employee> empList = new ArrayList<>();
        empList.add(emp);
        empList.add(emp1);

        List<Employee> empListRef = empList;

        System.out.println("empList Obj: "+empList.get(0).getName());
        System.out.println("empListRef Obj: "+empListRef.get(0).getName());

        List<Employee> empListObjDeepCopy = empListRef.stream().map(inv -> new Employee(inv)).collect(Collectors.toList());

        empListObjDeepCopy.get(0).setName("Hi");

        System.out.println("empList Obj: "+empList.get(0).getName());
        System.out.println("empListRef Obj: "+empListRef.get(0).getName());
        System.out.println("empListObjDeepCopy Obj: "+empListObjDeepCopy.get(0).getName());
    }
}

class Employee {
    private String name; 
    private String rollNumber;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getRollNumber() {
        return rollNumber;
    }
    public void setRollNumber(String rollNumber) {
        this.rollNumber = rollNumber;
    }
    public Employee(Employee employee) {
        this.name = employee.name;
        this.rollNumber = employee.rollNumber;
    }
    public Employee() {
        super();
    }   
}

1 Ответ

0 голосов
/ 24 октября 2018

Использование .map(Employee::new) неоднозначно, потому что у вас есть два конструктора в вашем классе Employee.Попробуйте оставить только одну.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...