Developerというプロパティを持つリストAがあります。リストAが財産プロダクトマネージャーとプロパティをリストAのものと同じであるBをリストに変換することが求められているプロパティを持つリストを別のリストに変換する方法は、Java 8の方法ですか?
List<Developer> A = ImmutableList.of(new Developer("Ivan", 25), new Developer("Curry", 28));
:プロパティを持つ
@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;
}
}
は、リストA:開発者のスキーマがあることが好きです
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;
}
0123:昔
@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;
}
}
、我々のようなコードを記述します
私はJava 8でもっと上品で簡単な方法で上記を書くことができますか?このようなおそらく
ここで本当の問題があります'name'と' age'をカプセル化する共通のスーパークラス 'Person'を継承しているようです。あなたが気の利いたJava8の鐘や笛にアップグレードする前に、おそらくデザインの権利を得るべきです。 –
@ジムガリソンはい、私はあなたに同意する、私は基本にもっと注意を払う必要があります。より多くのプロパティ、多分20以上の場合、コンストラクタは直接使用することはできません、どのように変換する? – Ivan
'Developer'と' ProductManager'に共通の基本クラス 'Person'があり、すべての共通プロパティを定義していれば、両方のクラスに' Person'パラメータを持つコンストラクタを定義することに問題はありませんでした。これらのコンストラクタは、作業を行う 'Person'基本クラスのコンストラクタに委譲するだけなので、一度だけ実装する必要があります。これは確立されたパターンであることに注意してください。つまり、すべての標準的な 'Collection'型は、コピー元の' Collection'引数を受け入れるコンストラクタを提供します。 – Holger