Comment faire pour convertir une liste avec les propriétés d'une autre liste de java 8?

Il y a une Liste avec Un promoteur immobilier. Développeur schéma aime:

@Getter
@Setter
public class Developer {
    private String name;
    private int age;

    public Developer(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public Developer name(String name) {
        this.name = name;
        return this;
    }

    public Developer name(int age) {
        this.age = age;
        return this;
    }
}

Une liste avec les propriétés:

List<Developer> A = ImmutableList.of(new Developer("Ivan", 25), new Developer("Curry", 28));

Il est demandé de convertir Une Liste de la Liste B, qui, avec la propriété ProductManager et les propriétés sont les mêmes que ceux de la Liste A.

@Getter
@Setter
public class ProductManager {
    private String name;
    private int age;

    public ProductManager(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public ProductManager name(String name) {
        this.name = name;
        return this;
    }

    public ProductManager name(int age) {
        this.age = age;
        return this;
    }
}

Dans les vieux jours, nous devons écrire des codes comme:

public List<ProductManager> convert() {
    List<ProductManager> pros = new ArrayList<>();
    for (Developer dev: A) {
        ProductManager manager = new ProductManager();
        manager.setName(dev.getName());
        manager.setAge(dev.getAge());
        pros.add(manager);
    }
    return pros;
}

Comment pourrions-nous écrire ci-dessus dans un de plus élégant et brève avec Java 8?

La vraie question ici est pourquoi Developer et ProductManager ne semblent pas hériter d'une super-classe commune Person qui encapsule la name et age. Avant de vous rendre la mise à niveau vers chouette Java8 cloches & sifflets, vous devriez probablement obtenir le droit de conception.
Oui, je suis d'accord avec vous, j'ai besoin de payer plus d'attention aux fondamentaux. Si il y a plus de propriétés, peut-être plus de 20, et le constructeur ne peut pas utiliser directement, comment les convertir ?
Si Developer et ProductManager avait une classe de base commune, Person, définissant l'ensemble des propriétés communes, il n'y a pas de problème de définition d'un constructeur avec un Person paramètre dans les deux classes. Ces constructeurs serait tout simplement déléguer au constructeur de la Person de la classe de base qui fait le travail, de sorte qu'il doit être mis en œuvre qu'une seule fois. Notez que c'est un modèle établi, c'est à dire tous les standard Collection types de fournir un constructeur acceptant un Collection argument pour la copie.

OriginalL'auteur Ivan | 2016-10-14