My apologies for my limited generic knowledge in advance.
I have the following situation:
Grade 1:
public class PostProcess implements Serializable {
public int order;
public PostProcess(){
}
}
Grade 2:
public class Application extends PostProcess{
public int subOrder;
public Application(){
}
}
Grade 3:
public class FileOperation extends PostProcess{
public int subOrder;
public FileOperation(){
}
}
What I'm trying to achieve in another class is to sort a list containing a combination of FileOperation and Application objects, defined as:
private ArrayList<? extends PostProcess> processList = new ArrayList<PostProcess>();
This view should be in two fields of both of these objects, namely: "order" and "suborder". "order" is inherited from PostProcess, and "subOrder" is defined in both the "Application" and "FileOperation" classes.
Throughout my reading journey on Generics, Comparable, Comparators, and Interfaces, I think I got it all messed up.
I am trying to apply sorting using:
Collections.sort(processList, new PostProcessComparator());
PostProcessComparator is defined as:
public class PostProcessComparator implements Comparator<? extends PostProcess> {
@Override
public int compare(Object p1, Object p2) {
int mainOrderCompare = p1.getOrder().compareTo(p2.getOrder());
if (mainOrderCompare != 0) {
return mainOrderCompare;
} else {
return p1.getSubOrder().compareTo(p2.getSubOrder());
}
}
}
Questions:
, (, , ) , , . Im , ;)
, , , !
- , .
!
NickJ Winzu ArrayList.
- subOrder FileOperation ( )
:
public class PostProcessComparator<T extends PostProcess> implements Comparator<T>
Integer.compare(p1.getOrder(), p2.getOrder()) .
( )
:
Collections.sort(processList, new PostProcessComparator());
:
- [unchecked] unchecked invoke : sort
required: List<T>,Comparator<? super T>
found: ArrayList<PostProcess>,PostProcessComparator
, , .
?