I have a List from the type Superclass A and in that List there are multiple objects from two Subclasses, Subclass B and Subclass C and want to sort them alphabetically and then filter the objects from either Subclass, something like this:
List <A> listA= new ArrayList<A>();
Collections.sort(listA);
for (A iterator : listA)
if (iterator instanceof B)
System.out.println(iterator);
My question is how should I structure my code. Should I implement Comparable <A> and
public int compareTo(A a) {
return name.compareTo(a.getName());
}
in both Superclass and Subclass? If I'm not being clear enough, please say so.
EDIT: I was getting an error due to a method I had left in one of the Subclasses that was already inherited from the Superclass, and I thought the error had anything to do with the structure of the Comparable<A>, because I wasn't certain if it was correct, but I already had the code as all you guys told me, but thanks anyway.
If you can compare instances of SuperclassA regardless of whether they are SubclassB or SubclassC, then your solution with the Comparable<SuperclassA> in the superclass alone makes perfect sense. If the implementation requires knowledge of data specific to the subclasses, add abstract methods that supply this data to SuperclassA, and call them in your comparator.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With