1

I have a method that takes in a List<> and adds all the numbers in the list together and returns if the number is = 100

My problem is that I want to use the same method for a number of different types of lists

So instead of having this

public boolean checkPercent(List<BarStaff> associates){..same..}
public boolean checkPercent(List<Waiters> associates){..same..}
public boolean checkPercent(List<KitchenStaff> associates){..same..} 

I want to have this

public boolean checkPercent(List<could be any type> associates){..same..} 

Instead of reusing the same code just of different lists, is there a way to use the same code for all the different types of lists (the staff have the same values in them so they are not different in any way)?

4 Answers 4

8

You could use a parameterized method:

public <T> boolean checkPercent(List<T> associates)
{
    // snip...
}

or just accept any list:

public boolean checkPercent(List<?> associates)
{
    // snip...
}
Sign up to request clarification or add additional context in comments.

Comments

7

You may create a generic method:

public <T> boolean checkPercent(List<T> associates) {
    ... your code ...
}

Comments

3

Use generics:

public <T> boolean checkPercent(List<T> associates){...}

Comments

2

The object-oriented approach would be to have BarStaff, Waiters, and KitchenStaff implement a Employee interface that has a method public int getPercentage().

public boolean checkPercent(List<? extends Employee> associates)
{
    foreach (Employee associate in associates)
    {
        int i = associate.getPercentage();
        // rest of code.
    }
}

3 Comments

I don't think this would work. See stackoverflow.com/questions/9810445/…
Extends and implements are different.
This could work if it was an array, i.e Employee[] will accept BarStaff[]. However, I think the right way to do is List<? extends Employee>.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.