Я должен сделать особую сортировку в объекте. Я прочитал много руководств и использовал класс Comparable.
Мои занятия:
public class PaAcao implements Serializable, IAcao, Comparable<PaAcao> /* Ordenar */ {
@Override
public int compareTo(PaAcao acaoCompara) {
//return this.aresta - outro.aresta;
int i = 0;
String[] array1 = this.cnrAcao.split(".");
String[] array2 = acaoCompara.cnrAcao.split(".");
for(String c : array1){
if (array2.length > i){
if (Integer.parseInt(c) > Integer.parseInt(array2[i]))
{
return 1;
}
if (Integer.parseInt(c) < Integer.parseInt(array2[i]))
{
return -1;
}
}
i++;
}
return -1;
}
Для этого класса у меня есть интерфейс:
package br.com.agraria.qualidade.model.entity;
public interface IAcao{
public abstract String getCnmUsuarResp();
public abstract Usuario getusuarResp();
public abstract void setusuarResp(Usuario usuarResp);
public abstract PaStatusAcao getIcdStatus();
public abstract String getCnrAcao();
public abstract Boolean getLpublico();
}
И я получаю ошибку ниже:
public class PaAcaoServiceImpl extends HibernateGenericServiceImpl<PaAcao> implements PaAcaoService {
@Override
public List<? extends IAcao> processarAcoes(List<? extends IAcao> acoesProcessar) {
SessaoPrivilegiosGerente sessaoPrivilegiosGerente = sessaoService.getSessaoPrivilegiosGerente();
List<IAcao> macroRemover = new ArrayList<IAcao>();
Collections.sort(acoesProcessar);
...
}
}
Проблема в строке Collections.sort(acoesProcessar); я получаю сообщение:
Несоответствие границ: универсальный метод
sort(List<T>)
типа Collections неприменим для аргументов (List<capture#14-of ? extends IAcao>
). Выведенный типcapture#14-of ? extends IAcao
не является допустимой заменой ограниченного параметра<T extends Comparable<? super T>>
.
IAcao
реализовыватьComparable
, если список будет использовать этот тип? Если бы список был типаPaAcao
, то, думаю, все было бы в порядке. - person Deactivator2   schedule 13.08.2013a.compareTo(b) = -b.compareTo(a)
, чтобы вы не могли вернуть ничего, кроме 0 для равных значений. - person Peter Lawrey   schedule 13.08.2013Comparable
. Другими словами, если вы объявитеIAcao
для реализацииComparable
, вы не сможете реализовать его и вPaAcao
, но методcompareTo
все равно будет работать как унаследованный метод. - person Deactivator2   schedule 13.08.2013public interface IAcao extends Comparable<IAcao>
и удалите реализациюComparable
из объявления классаPaAcao
. - person Deactivator2   schedule 13.08.2013extends
, а неimplements
? И, пожалуйста, отредактируйте свой вопрос, обновив весь код. - person Deactivator2   schedule 13.08.2013