BAEL-5819: java collections pecs

This commit is contained in:
emanueltrandafir1993 2022-11-27 19:02:37 +01:00
parent d54d4768c0
commit d804060040
4 changed files with 82 additions and 0 deletions

View File

@ -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<Operator> operators = Arrays.asList(new Operator("sam"), new Operator("daniel"));
List<Customer> customers = Arrays.asList(new Customer("arys"), new Customer("cristiana"));
// sendEmails(operators); --> will not compile!
sendEmailsFixed(operators);
sendEmailsFixed(customers);
}
private void sendEmails(List<User> users) {
for (User user : users) {
System.out.println("sending email to " + user);
}
}
private void sendEmailsFixed(List<? extends User> users) {
for (User user : users) {
System.out.println("sending email to " + user);
}
}
public void consumerSupers() {
List<Operator> allOperators = Arrays.asList(new Operator("tom"));
List<User> allUsers = Arrays.asList(new Operator("tom"), new Customer("spencer"));
// addUsersFromMarketingDepartment(allUsers); --> will not compile!
addUsersFromMarketingDepartmentFixed(allOperators);
addUsersFromMarketingDepartmentFixed(allUsers);
}
private void addUsersFromMarketingDepartment(List<Operator> users) {
users.add(new Operator("john doe"));
users.add(new Operator("jane doe"));
}
private void addUsersFromMarketingDepartmentFixed(List<? super Operator> users) {
users.add(new Operator("john doe"));
users.add(new Operator("jane doe"));
}
private void addUsersAndSendEmails(List<User> users) {
users.add(new Operator("john doe"));
for (User user : users) {
System.out.println("sending email to: " + user);
}
}
}

View File

@ -0,0 +1,7 @@
package com.baeldung.collections.pecs.model;
public class Customer extends User {
public Customer(String name) {
super(name);
}
}

View File

@ -0,0 +1,7 @@
package com.baeldung.collections.pecs.model;
public class Operator extends User {
public Operator(String name) {
super(name);
}
}

View File

@ -0,0 +1,9 @@
package com.baeldung.collections.pecs.model;
public class User {
private final String name;
public User(String name) {
this.name = name;
}
}