ViniGodoy 10 de jul. de 2011
Por que seu código está em Java 4?
public class Main {
public static void main ( String [] args ){
List < AvailList > list = new ArrayList < AvailList > ();
list . add ( new AvailList ( 3 , 3 ));
list . add ( new AvailList ( 2 , 2 ));
list . add ( new AvailList ( 1 , 1 ));
list . add ( new AvailList ( 4 , 4 ));
list . add ( new AvailList ( 0 , 0 ));
System . out . println ( list );
Collections . sort ( list );
System . out . println ( list );
}
public class AvailList implements Comparable < AvailList > {
private int tamanho ;
private long endereco ;
public AvailList (){
super ();
}
public AvailList ( int tamanho , long endereco ){
this . tamanho = tamanho ;
this . endereco = endereco ;
}
public int getTamanho () {
return tamanho ;
}
public void setTamanho ( int tamanho ) {
this . tamanho = tamanho ;
}
public long getEndereco () {
return endereco ;
}
public void setEndereco ( long endereco ) {
this . endereco = endereco ;
}
@Override
public String toString () {
return "AvailList [tamanho=" + tamanho + ", endereco=" + endereco + "]" ;
}
@Override
public int hashCode () {
final int prime = 31 ;
int result = 1 ;
result = prime * result + ( int ) ( endereco ^ ( endereco >>> 32 ));
result = prime * result + tamanho ;
return result ;
}
@Override
public boolean equals ( Object obj ) {
if ( this == obj )
return true ;
if ( obj == null )
return false ;
if ( getClass () != obj . getClass ())
return false ;
AvailList other = ( AvailList ) obj ;
if ( tamanho != other . tamanho )
return false ;
return true ;
}
@Override
public int compareTo ( AvailList emp ) {
if ( this . tamanho < emp . tamanho )
return - 1 ;
if ( this . tamanho > emp . tamanho )
return 1 ;
return 0 ;
}
}
ViniGodoy 10 de jul. de 2011
Tem uma ótima explicação sobre isso no GUJ também:
rsom91 10 de jul. de 2011
como eu mudo do java 4?
nao entendi…
grato!
ViniGodoy 10 de jul. de 2011
Já postei uma versão do seu código em Java 6.
Sua sintaxe estava antiquada, mas essa provavelmente não é a causa do problema. Você tem certeza que aquele Comparable se refere a classe java.lang.Comparable?
rsom91 10 de jul. de 2011
continua com o mesmo erro…problema e que eh essa mesmo…
ViniGodoy 10 de jul. de 2011
Rodei aqui e funcionou. Veja como ficou meu arquivo Main.java
import java.util.ArrayList ;
import java.util.Collections ;
import java.util.List ;
public class Main {
public static void main ( String [] args ){
List < AvailList > list = new ArrayList < AvailList > ();
list . add ( new AvailList ( 3 , 3 ));
list . add ( new AvailList ( 2 , 2 ));
list . add ( new AvailList ( 1 , 1 ));
list . add ( new AvailList ( 4 , 4 ));
list . add ( new AvailList ( 0 , 0 ));
System . out . println ( list );
Collections . sort ( list );
System . out . println ( list );
}
}
E o meu arquivo AvailList.java
public class AvailList implements Comparable < AvailList > {
private int tamanho ;
private long endereco ;
public AvailList (){
super ();
}
public AvailList ( int tamanho , long endereco ){
this . tamanho = tamanho ;
this . endereco = endereco ;
}
public int getTamanho () {
return tamanho ;
}
public void setTamanho ( int tamanho ) {
this . tamanho = tamanho ;
}
public long getEndereco () {
return endereco ;
}
public void setEndereco ( long endereco ) {
this . endereco = endereco ;
}
@Override
public String toString () {
return "AvailList [tamanho=" + tamanho + ", endereco=" + endereco + "]" ;
}
@Override
public int hashCode () {
final int prime = 31 ;
int result = 1 ;
result = prime * result + ( int ) ( endereco ^ ( endereco >>> 32 ));
result = prime * result + tamanho ;
return result ;
}
@Override
public boolean equals ( Object obj ) {
if ( this == obj )
return true ;
if ( obj == null )
return false ;
if ( getClass () != obj . getClass ())
return false ;
AvailList other = ( AvailList ) obj ;
if ( tamanho != other . tamanho )
return false ;
return true ;
}
@Override
public int compareTo ( AvailList emp ) {
if ( this . tamanho < emp . tamanho )
return - 1 ;
if ( this . tamanho > emp . tamanho )
return 1 ;
return 0 ;
}
}
rsom91 10 de jul. de 2011
copiei e colei mas nao funciona… o eclipse 3.6.2 nao compila com erro…
aff…
pode ser o eclipse?
grato
ViniGodoy 10 de jul. de 2011
Eu criei no eclipse também. Tente recriar o projeto.
rsom91 10 de jul. de 2011
funcinou…
mas pq acontece isso?
tem alguma maneira de evitar isso?
grato
ViniGodoy 10 de jul. de 2011
Isso geralmente não acontece.
Não sei o que houve em seu projeto antigo , pois não sei como foi configurado . Mas as possíveis causas são :
a ) Você criou um projeto que usa uma versão antiga , muito antiga , de Java ;
b ) Você tem alguma outra classe chamada Comparable no seu projeto e está usando essa classe sem ver ;
Agora, um projeto no Eclipse não “estraga” sozinho.