Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Java Generics Program question What the program does is outlined in the comments

ID: 3706427 • Letter: J

Question

Java Generics Program question

What the program does is outlined in the comments and the main method. It contains an Employee class and few classes, e.g. Programmer, that extend Employee.

You will need to write four methods to make this program work: printNames, printFavoriteLanguages, addElements, and printAll.

You are required to use wildcards in implementing these methods:

printNames will print the names of all elements of an array list of some sort of employee objects, e.g. ArrayList or ArrayList. It does not remove elements from the array list.

printFavoriteLanguages will print the favorite programming languages of an array list of some sort of programmer objects, e.g. ArrayList or ArrayList. It does not remove elements from the array list. You are required to use an extends wildcard in the parameter lists of each of printNames and printFavoriteLanguages.

addElements will add elements from one array list to another array list. It does not remove elements from either array list. You are required to use a super wildcard in the parameter list of addElements.

printAll will print all of the elements in an ArrayList, using the toString method. It does not remove elements from the array list. You are required to use an unbounded wildcard in its parameter list.

import java.util.ArrayList public class ManageEmployees public static void main (String [] args) ArrayList webDevs new ArrayList(); webDevs. add (new WebDeveloper ("Sir Timothy ena era-Lee")) ; webDevs.add(new WebDeveloper ("Brendan?d.ch")) ; ArrayList sysDevs = new ArrayList(); sysDevs.add (new SystemsProgrammer ("Grace Hopper")) sysDevs.add (new SystemsProgrammer ("Donald Knuth")) ArrayList designers new ArrayList designers.add (new Designer ("Roberta Williams") designers.add (new Designer ("Sid Meier")) ArrayList theorists new ArrayList(); theorists .add(new Theorist ("Shatiam GRddwa???")) ; theorists.add (new Theorist ("Stephen Cook") ArrayList?Programmer> devs new ArrayList(); devs.add (new Programmer ("Richard taddman"; devs.add (new Programmer ("Bill Joy")); ArrayList objects -new ArrayList objects.add (42) objects.add ("Hello") objects.add (new Programmer ("Lindaas")) System.out println("Web deprintNames (webDevs) System.out println("Sys deprintNames (sysDevs) System.out.printin ("Designers:") printNames (designers) System.out.println("Theorists:"): printNames (theorists) System.out.println("General des" printNames (devs) ArrayList employees new ArrayList addElements (webDevs, employees) addElements (sysDevs, employees) addElements (designers, employees) addElements (theorists, employees) addElements (devs, employees) System.out.println("All employees: ") printNames (employees) System.out.println("Web de (using toString)":printAll (webDevs) System.out.println("objects (using tostring):") printAll (objects) System.out.println("Among web developers:") printFavoriteLanguages (webDevs) addElements (webDevs, devs) addElements (sysDevs, devs) System.out.println("Among all developers:") printFavoriteLanguages (devs) INSERT THE MISSING METHODS HERE .. .

Explanation / Answer

Below is your code. I have added some more code in main to test it. Please comment or remove if you dont want that code.

public class ManageEmployees {

public static void main(String[] args) {

ArrayList<WebDeveloper> webDevs = new ArrayList<>();

webDevs.add(new WebDeveloper("Sir Timothy Berners-Lee"));

webDevs.add(new WebDeveloper("Brendan Eich"));

ArrayList<SystemsProgrammer> sysDevs = new ArrayList<>();

sysDevs.add(new SystemsProgrammer("Grace Hopper"));

sysDevs.add(new SystemsProgrammer("Donald Knuth"));

ArrayList<Designer> designers = new ArrayList<>();

designers.add(new Designer("Roberta Williams"));

designers.add(new Designer("Sid Meier"));

ArrayList<Theorist> theorists = new ArrayList<>();

theorists.add(new Theorist("Shafrira Goldwasser"));

theorists.add(new Theorist("Stephen Cook"));

ArrayList<Programmer> devs = new ArrayList<>();

devs.add(new Programmer("Richard Stallman"));

devs.add(new Programmer("Bill Joy"));

ArrayList<Object> objects = new ArrayList<>();

objects.add(42);

objects.add("Hello");

objects.add(new Programmer("Linda Liukas"));

System.out.println("Web devs: ");

printNames(webDevs);

System.out.println("Sys devs: ");

printNames(sysDevs);

System.out.println("Designers: ");

printNames(designers);

System.out.println("Theorists: ");

printNames(theorists);

System.out.println("General devs: ");

printNames(devs);

ArrayList<Employee> employees = new ArrayList<>();

addElements(webDevs, employees);

addElements(sysDevs, employees);

addElements(designers, employees);

addElements(theorists, employees);

addElements(devs, employees);

System.out.println("All employees: ");

printNames(employees);

System.out.println("Web devs (using toString):");

printAll(webDevs);

System.out.println("objects (using toString):");

printAll(objects);

System.out.println("Among web developers: ");

printFavoriteLanguages(webDevs);

addElements(webDevs, devs);

addElements(sysDevs, devs);

System.out.println("Among all developers: ");

printFavoriteLanguages(devs);

}

// INSERT THE MISSING METHODS HERE ...

public static <E extends Object> void printNames(ArrayList<E> inputArray) {

for (E element : inputArray)

System.out.print(element);

System.out.println();

}

public static <E> void addElements(ArrayList<E> inputArray1, ArrayList<? super E> inputArray2) {

for (int i = 0; i < inputArray1.size(); i++) {

inputArray2.add((E) inputArray1.get(i));

}

}

public static <E> void printAll(ArrayList<E> inputArray) {

for (int i = 0; i < inputArray.size() - 1; i++) {

System.out.println(inputArray);

}

}

public static <E extends Programmer> void printFavoriteLanguages(ArrayList<E> inputArray) {

for (int i = 0; i < inputArray.size(); i++) {

E Employee = inputArray.get(i);

String Fl = Employee.favoriteLanguage();

System.out.println(Fl);

}

}

}

class Employee {

private String name;

public Employee(String name) {

this.name = name;

}

public String name() {

return name;

}

public String toString() {

return " Employee Name: " + name;

}

}

class Programmer extends Employee {

public Programmer(String name) {

super(name);

}

public String favoriteLanguage() {

return "Java";

}

public String toString() {

return super.toString()+" Favourite Language: "+favoriteLanguage()+" ";

}

}

class WebDeveloper extends Programmer {

public WebDeveloper(String name) {

super(name);

}

public String favoriteLanguage() {

return "JavaScript";

}

public String toString() {

return super.toString()+" Favourite Language: "+favoriteLanguage()+" ";

}

}

class SystemsProgrammer extends Programmer {

public SystemsProgrammer(String name) {

super(name);

}

public String favoriteLanguage() {

return "C";

}

public String toString() {

return super.toString()+" Favourite Language: "+favoriteLanguage()+" ";

}

}

class Theorist extends Employee {

public Theorist(String name) {

super(name);

}

public String toString() {

return super.toString()+" and is Theorist";

}

}

class Designer extends Employee {

public Designer(String name) {

super(name);

}

public String toString() {

return super.toString()+" and is Designer";

}

}

Output

Web devs:

Employee Name: Sir Timothy Berners-Lee
Favourite Language: JavaScript

Favourite Language: JavaScript

Employee Name: Brendan Eich
Favourite Language: JavaScript

Favourite Language: JavaScript

Sys devs:

Employee Name: Grace Hopper
Favourite Language: C

Favourite Language: C

Employee Name: Donald Knuth
Favourite Language: C

Favourite Language: C

Designers:

Employee Name: Roberta Williams and is Designer
Employee Name: Sid Meier and is Designer
Theorists:

Employee Name: Shafrira Goldwasser and is Theorist
Employee Name: Stephen Cook and is Theorist
General devs:

Employee Name: Richard Stallman
Favourite Language: Java

Employee Name: Bill Joy
Favourite Language: Java

All employees:

Employee Name: Sir Timothy Berners-Lee
Favourite Language: JavaScript

Favourite Language: JavaScript

Employee Name: Brendan Eich
Favourite Language: JavaScript

Favourite Language: JavaScript

Employee Name: Grace Hopper
Favourite Language: C

Favourite Language: C

Employee Name: Donald Knuth
Favourite Language: C

Favourite Language: C

Employee Name: Roberta Williams and is Designer
Employee Name: Sid Meier and is Designer
Employee Name: Shafrira Goldwasser and is Theorist
Employee Name: Stephen Cook and is Theorist
Employee Name: Richard Stallman
Favourite Language: Java

Employee Name: Bill Joy
Favourite Language: Java

Web devs (using toString):
[
Employee Name: Sir Timothy Berners-Lee
Favourite Language: JavaScript

Favourite Language: JavaScript
,
Employee Name: Brendan Eich
Favourite Language: JavaScript

Favourite Language: JavaScript
]
objects (using toString):
[42, Hello,
Employee Name: Linda Liukas
Favourite Language: Java
]
[42, Hello,
Employee Name: Linda Liukas
Favourite Language: Java
]
Among web developers:
JavaScript
JavaScript
Among all developers:
Java
Java
JavaScript
JavaScript
C
C

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote