Antwort
List<Person> p2 = new ArrayList<>(p1);
Das würde gehen, wenn du einer Klasse ein Interface hinzufügst.
Beispiel
public class Person1 implements IPerson {
}
public class Person2 implements IPerson {
}
Dann kannst du folgendes machen
List<IPerson> p1 = new ArrayList<>();
List<IPerson> p2 = new ArrayList<>(p1);
Das ganze einmal ohne Interface
import java.util.ArrayList;
import java.util.List;
public class Test {
public class Person1 {
private String name;
private int alter;
public Person1(String name, int alter) {
this.name = name;
this.alter = alter;
}
}
public class Person2 {
private String name;
private int alter;
public Person2(String name, int alter) {
this.name = name;
this.alter = alter;
}
}
public List<Person1> p1 = new ArrayList<>();
public List<Person2> p2 = new ArrayList<>();
public void test() {
p1.forEach(person -> {
p2.add(new Person2(person.name, person.alter));
});
}
}