Ciao devo realizzare una classe torreche rappresenta unatorre di blocchi.Il mio problema è l'implementazione del metodo numColorati() ed numJolly(), che chiedono di estituiire il numero di blocchi colorati ed di blocchi jolly presenti nella torre.

codice:
import java.util.*;
class Torre{
private String nome;
ArrayList<Blocco1> a;
BloccoColorato b; //sottoclasse di Blocco1
BloccoJolly1 b1; ////sottoclasse di Blocco1

Torre(String nome){
this.nome=nome;
a=new ArrayList<Blocco1>();
}
public void addBlocco(Blocco1 b){
a.add(b);
}
public int numColorati(){
int count=0;
for(Blocco1 b:a){
 if(a.contains(b)){
count++;
}
}
return count;
}
public int numJolly(){
int count=0;
for(Blocco1 b:a){
 if(a.contains(b1)){
count++;
}
}
return count;
}
public static void main (String [] args){
BloccoColorato n=new BloccoColorato(2,"rosso");
BloccoColorato n1=new BloccoColorato(3,"giallo");
BloccoColorato n2=new BloccoColorato(4,"rosa");
BloccoJolly1 n3=new BloccoJolly1(5);
Torre t=new Torre("ggg");
t.addBlocco(n);
t.addBlocco(n1);
t.addBlocco(n2);
t.addBlocco(n3);
System.out.println(t.numColorati());
System.out.println(t.numJolly());
}
}
Il compilatore mi restutisce 4 e 0 al posto di 3 (numero di blocchi colorati) ed 1(numero di blocchi jolly).Perchè iterando l'arraylist ed usando il metodo contains il compilatore non mi riconosce gli ogetti BloccoColorato e BloccoJolly1?