Компаратор для универсального интерфейса без предупреждений - PullRequest
1 голос
/ 29 октября 2010

Дано:

public interface PrimaryKey<Key extends Comparable> {
    Key getKey();
}

и

public class PrimaryKeyComparator implements Comparator<PrimaryKey> {
    public int compare(PrimaryKey first, PrimaryKey second) {
        return first.getKey().compareTo(second.getKey());
    }
}

Эта комбинация работает, но выдает предупреждения о необработанных типах. Я пробовал разные способы добавления аргументов типа, но каждая комбинация, которую я пробовал, нарушает код.

1 Ответ

3 голосов
/ 29 октября 2010

Попробуйте это:

public interface PrimaryKey<TKey extends Comparable<TKey>> {
    TKey getId();
}

public class PrimaryKeyComparator<TKey extends Comparable<TKey>> 
                                 implements Comparator<PrimaryKey<TKey>> {
    public int compare(PrimaryKey<TKey> first, PrimaryKey<TKey> second) {
        return first.getId().compareTo(second.getId());
    }
}
...