Allora per adesso ho risistemato il codice in questo modo:

codice:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class TableSort
{
    boolean descending;
    int sort;
    Comparator<Game> comparator;
    public TableSort(int s,boolean d)
    {
        sort=s;
        descending=d;
    }
    public void sort(ArrayList<Game> games)
    {
        if(sort==0)comparator=new PathComparator();
        else if(sort==1)comparator=new DateComparator();
        else if(sort==2)comparator=new WhiteComparator();
        else if(sort==3)comparator=new BlackComparator();
        else if(sort==4)comparator=new WhiteRankComparator();
        else if(sort==5)comparator=new BlackRankComparator();
        else if(sort==6)comparator=new TypeComparator();
        else if(sort==7)comparator=new CommentComparator();
        else return;
        if(descending)comparator=Collections.reverseOrder(comparator);
        Collections.sort(games,comparator);
    }
    class PathComparator implements Comparator<Game>
    {
        public int compare(Game g,Game h){
            return g.path.compareTo(h.path);
        }
    }
    class DateComparator implements Comparator<Game>
    {
        public int compare(Game g,Game h){
            return g.date.compareTo(h.date);
        }
    }
    class WhiteComparator implements Comparator<Game>
    {
        public int compare(Game g,Game h){
            return g.white.compareTo(h.white);
        }
    }
    // ... stessa storia per gli altri comparatori
}
Va bene come design ?