Problema com generics. Não consigo resolver o problema

Olá !!

O seguinte erro sempre aparece quando eu rodo o código abaixo.

Compiling 1 source file to C:\Users\JavaApplication9\build\classes
C:\Users\JavaApplication9\src\javaapplication9\Main.java:36: type javaapplication9.compararPessoa does not take parameters
Collections.sort(p, new compararPessoa<? extends Filho>());
1 error
FALHA NA EXECUÇÃO (tempo total: 0 segundos)

package javaapplication9;
import java.util.*;


class compararPessoa implements Comparator&lt;Filho&gt;{
       public int compare(Filho obj1, Filho obj2){           
          return  obj1.idade-obj2.idade;
      }
}

class Pai{
       int idade;
       String nome;
       Pai(int idade, String nome){
          this.idade = idade;
          this.nome = nome;
       }
       Pai(){}
}
class Filho extends Pai{            
       Filho(int idade, String nome){
             this.idade = idade;
             this.nome = nome;
       }
       Filho(){}
}        

public class Main {  
    public static void main(String[] args) {
        List&lt;? super Filho&gt; p =new LinkedList&lt;Pai&gt;();
        p.add(new Filho(11,&quot;Pessoa1&quot;));
        p.add(new Filho(14,&quot;Pessoa4&quot;));
        p.add(new Filho(15,&quot;Pessoa5&quot;));                
        p.add(new Filho(12,&quot;Pessoa2&quot;));
        p.add(new Filho(13,&quot;Pessoa3&quot;));
        
        //        Collections.sort(p, new compararPessoa());      
        Collections.sort(p, new compararPessoa&lt;? extends Filho&gt;());
   
        Iterator pai = p.iterator();
        while(pai.hasNext()) {
            Filho f = (Filho)pai.next();
            System.out.println(f.idade +&quot; - &quot;+f.nome);           
            System.out.println(&quot;-----------&quot;);
        }
    }    
}

Alguém poderia mostrar onde está o equívoco ???

Obrigado pela atenção

O erro é que sua classe compararPessoa não é genérica e na linha 38 você a esta criando como se fosse.
flw

Olá !!!

Eu alterei o código.
O seguinte código quando roda mostra a seguinte mensagem:

Compiling 1 source file to C:\Users\JavaApplication9\build\classes
Note: C:\Users\JavaApplication9\src\javaapplication9\Main.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
compile-single:
run-single:


import java.util.*;

class compararPessoa implements Comparator{
       public int compare(Object o1, Object o2){           
          return  ((Filho)o1).idade-((Filho)o2).idade;
      }
}

class Pai{
       int idade;
       String nome;
       Pai(int idade, String nome){
          this.idade = idade;
          this.nome = nome;
       }
       Pai(){}
}
class Filho extends Pai{            
       Filho(int idade, String nome){
             this.idade = idade;
             this.nome = nome;
       }
       Filho(){}
}        

public class Main {  
    public static void main(String[] args) {
        List&lt;? super Filho&gt; p =new LinkedList&lt;Pai&gt;();
        p.add(new Filho(11,"Pessoa1"));
        p.add(new Filho(14,"Pessoa4"));
        p.add(new Filho(15,"Pessoa5"));                
        p.add(new Filho(12,"Pessoa2"));
        p.add(new Filho(13,"Pessoa3"));
        
        Collections.sort(p, new compararPessoa());         

       Iterator pai = p.iterator();
        while(pai.hasNext()) {
            Filho f = (Filho)pai.next();
            System.out.println(f.idade +" - "+f.nome);           
            System.out.println("-----------");
        }
    }    
}

Como é que eu poderia resolver este problema ???

Obrigado

Olá eusoufeioedai,
utilize o comando javac -Xlint Main.java para compilar o código.
Preste atenção nos Warnings apresentados.

Abraço!

Olá !!!


C:\Users\JavaApplication9\src\javaapplication9>javac -Xlint Main.java
Main.java:36: cannot find symbol
symbol : method sort(java.util.List<capture of ? super javaapplication9.Filho>,
javaapplication9.compararPessoa)
location: class java.util.Collections
Collections.sort(p, new compararPessoa());
^
1 error

C:\Users\JavaApplication9\src\javaapplication9>


Estou viajando na maionese.


method sort(java.util.List<capture of ? super javaapplication9.Filho>,javaapplication9.compararPessoa)

Vou estudar mais um pouco sobre generics

Obrigado !