Hi Dale,
JY's reasoning seems right .. if not possible problem can be scope of methods and fields.
Suggestions:
1.> Unless required use anonymos inner classes. This will reduce lot of pain.
2.> Comparator is in a way logic used as data. If u think that at two places u have ditto same logic of compare() then u should be creating only one object and will no longer be able to keep the class anonymos ... it still can be inner.
3.> If u think that number of classes can be further reduced by capturing some common control attributes for ur comparator logic Go ahead ... its good design.
Typical case as u pointed out will be
if(ASCENDING) return a-b;
else return b-a;
It seems that u have understood the concept and u r on the right track I hope it helps in building confidance in ur own design ... but I can not really solve the real problem unless u paste some code here
Thanks
-Shashank