Ciao devo implementare una classe che costruisca delle torri;la superclasse è abstract e le sottoclassi ne devono implementarne i metodi:
codice:
import java.lang.*;
abstract class Blocco implements Comparable<Blocco>{
String colore;Blocco(String colore){
this.colore=colore;
}
public String getColore(){
return colore;
}
abstract boolean puoStareSopra(Blocco b);
public abstract int compareTo(Blocco o);
}
poi:
codice:
import java.util.*;
class BloccoNumerato extends Blocco implements {
int numero;
BloccoNumerato(String colore,int numero){
super(colore);
this.numero=numero;
}
/** if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}*/
public boolean equals(Blocco bn){
return colore.equals(bn.colore);
}
/**puoStareSopra(Blocco b)
che restituisce true se, nella costruzione della torre, questo blocco puo' stare sopra al blocco
specificato dal parametro b, false altrimenti.
Si assume che b sia un blocco disponibile (quindi, b!= null).*/
public boolean puoStareSopra(Blocco b){
if(b.colore=="jolly"){
return true;
}else
return false;
}
public int compareTo(Blocco o){
int verifica=colore.compareTo(o.colore);
if(verifica!=0){
return verifica;
}else
return this.numero.compareTo(numero);
}
public String toString(){
String s="";
return s+=colore+ " "+numero;
}
public static void main(String[] args){
BloccoNumerato i= new BloccoNumerato("blu",-5);
BloccoNumerato n=new BloccoNumerato("blue",-1);
ArrayList<Blocco> b=new ArrayList<Blocco>();
b.add(i);
b.add(n);
Collections.sort(b);
for(Blocco v:b){
System.out.println(v);
}
}
}
Il punto è che Io vorrei verifcare che se due oggetti di tipo BloccoNumerato hanno lo stesso nome(con compareTo),allora comparo il numero...il compilatore mi dà errore...solo che non sò come posso fare xkè solo la classe Blocco può implementare il metodo comparable<Blocco>...come posso appilcare compareTo(della classe Blocco)anche con numeri(che è della classe BloccoNumerato)?