Aggiungo che questo è un limite, dovuto alla "erasure", dei generics. La implementazione di una interfaccia generica in una classe X fissa la parametrizzazione della interfaccia per tutte le sottoclassi.
In altre parole, se Blocco è Comparable<Blocco>, nelle sottoclassi NON è possibile cambiare la parametrizzazione di Comparable a qualcos'altro.

BloccoNumerato NON può essere dichiarato Comparable<BloccoNumerato> e pertanto un eventuale override di compareTo deve mantenere il parametro Blocco. Ovviamente può cambiarne il comportamento.