From a0198cbccd9761b81b468343ec654fd36aaa9b7a Mon Sep 17 00:00:00 2001 From: emanueltrandafir1993 Date: Sun, 27 Nov 2022 19:02:37 +0100 Subject: [PATCH] BAEL-5819: java collections pecs --- .../pecs/ProducerExtendsConsumerSupers.java | 59 +++++++++++++++++++ .../collections/pecs/model/Customer.java | 7 +++ .../collections/pecs/model/Operator.java | 7 +++ .../baeldung/collections/pecs/model/User.java | 9 +++ 4 files changed, 82 insertions(+) create mode 100644 core-java-modules/core-java-collections-4/src/main/java/com/baeldung/collections/pecs/ProducerExtendsConsumerSupers.java create mode 100644 core-java-modules/core-java-collections-4/src/main/java/com/baeldung/collections/pecs/model/Customer.java create mode 100644 core-java-modules/core-java-collections-4/src/main/java/com/baeldung/collections/pecs/model/Operator.java create mode 100644 core-java-modules/core-java-collections-4/src/main/java/com/baeldung/collections/pecs/model/User.java diff --git a/core-java-modules/core-java-collections-4/src/main/java/com/baeldung/collections/pecs/ProducerExtendsConsumerSupers.java b/core-java-modules/core-java-collections-4/src/main/java/com/baeldung/collections/pecs/ProducerExtendsConsumerSupers.java new file mode 100644 index 0000000000..3c4b136b09 --- /dev/null +++ b/core-java-modules/core-java-collections-4/src/main/java/com/baeldung/collections/pecs/ProducerExtendsConsumerSupers.java @@ -0,0 +1,59 @@ +package com.baeldung.collections.pecs; + +import java.util.Arrays; +import java.util.List; + +import com.baeldung.collections.pecs.model.Customer; +import com.baeldung.collections.pecs.model.Operator; +import com.baeldung.collections.pecs.model.User; + +public class ProducerExtendsConsumerSupers { + + public void producerExtends() { + List operators = Arrays.asList(new Operator("sam"), new Operator("daniel")); + List customers = Arrays.asList(new Customer("arys"), new Customer("cristiana")); + + // sendEmails(operators); --> will not compile! + sendEmailsFixed(operators); + sendEmailsFixed(customers); + } + + private void sendEmails(List users) { + for (User user : users) { + System.out.println("sending email to " + user); + } + } + + private void sendEmailsFixed(List users) { + for (User user : users) { + System.out.println("sending email to " + user); + } + } + + public void consumerSupers() { + List allOperators = Arrays.asList(new Operator("tom")); + List allUsers = Arrays.asList(new Operator("tom"), new Customer("spencer")); + + // addUsersFromMarketingDepartment(allUsers); --> will not compile! + addUsersFromMarketingDepartmentFixed(allOperators); + addUsersFromMarketingDepartmentFixed(allUsers); + } + + private void addUsersFromMarketingDepartment(List users) { + users.add(new Operator("john doe")); + users.add(new Operator("jane doe")); + } + + private void addUsersFromMarketingDepartmentFixed(List users) { + users.add(new Operator("john doe")); + users.add(new Operator("jane doe")); + } + + private void addUsersAndSendEmails(List users) { + users.add(new Operator("john doe")); + for (User user : users) { + System.out.println("sending email to: " + user); + } + } + +} \ No newline at end of file diff --git a/core-java-modules/core-java-collections-4/src/main/java/com/baeldung/collections/pecs/model/Customer.java b/core-java-modules/core-java-collections-4/src/main/java/com/baeldung/collections/pecs/model/Customer.java new file mode 100644 index 0000000000..b3e97deddb --- /dev/null +++ b/core-java-modules/core-java-collections-4/src/main/java/com/baeldung/collections/pecs/model/Customer.java @@ -0,0 +1,7 @@ +package com.baeldung.collections.pecs.model; + +public class Customer extends User { + public Customer(String name) { + super(name); + } +} diff --git a/core-java-modules/core-java-collections-4/src/main/java/com/baeldung/collections/pecs/model/Operator.java b/core-java-modules/core-java-collections-4/src/main/java/com/baeldung/collections/pecs/model/Operator.java new file mode 100644 index 0000000000..e998088496 --- /dev/null +++ b/core-java-modules/core-java-collections-4/src/main/java/com/baeldung/collections/pecs/model/Operator.java @@ -0,0 +1,7 @@ +package com.baeldung.collections.pecs.model; + +public class Operator extends User { + public Operator(String name) { + super(name); + } +} diff --git a/core-java-modules/core-java-collections-4/src/main/java/com/baeldung/collections/pecs/model/User.java b/core-java-modules/core-java-collections-4/src/main/java/com/baeldung/collections/pecs/model/User.java new file mode 100644 index 0000000000..a0d9d6a9b7 --- /dev/null +++ b/core-java-modules/core-java-collections-4/src/main/java/com/baeldung/collections/pecs/model/User.java @@ -0,0 +1,9 @@ +package com.baeldung.collections.pecs.model; + +public class User { + private final String name; + + public User(String name) { + this.name = name; + } +}