[Sortowanie] Problem z natural comparatorem

0

Witam, chcę się zabrać za sortowanie lecz przy testowaniu komparatora wynika mi exception: Class Cast Exception (przykład wzięty z ksiązki algorytmy od podstaw, Harris Ross). Gdzieś coś przegapiłem tylko nie wiem gdzie, z góry dzięki za pomoc.

Klasa Testowa

package sortowanie;
import junit.framework.*;


public class ComparatorTest extends TestCase {
	protected static final Object A="A";
	protected static final Object B="B";
	
	public void testLessThan()
	{
		assertTrue(NaturalComparator.INSTANCE.compare(A, B)<0);
	}
	
	public void testMoreThan()
	{
		assertTrue(NaturalComparator.INSTANCE.compare(B, A)>0);
	}
	
	public void testEqualTo() {
        assertTrue(NaturalComparator.INSTANCE.compare(A, A) == 0);
    }

}
public interface Comparable {
    public int compareTo(Object other);
}

public interface Comparator {
    
    public int compare(Object left, Object right) throws ClassCastException;


}

Komparator

public final class NaturalComparator implements Comparator {

    /** jedyna, publicznie dostępna instancja komparatora */
    public static final NaturalComparator INSTANCE = new NaturalComparator();

    private NaturalComparator() {
    }



   public int compare(Object left, Object right) throws ClassCastException {
         assert left != null : "nie określono lewego obiektu ";
         assert right != null : "nie określono prawego obiektu ";
         return ((Comparable) left).compareTo(right);
     }

}
0

w linii return ((Comparable) left).compareTo(right); rzutujesz lewy obiekt na interfejs Comparable. Klasa String nie implementuje tego interfejsu więc dostajesz wyjątek podczas rzutowania. Do pól A oraz B przypisz jakieś obiekty które implementują ten interfejs.

A poza tym to zapoznaj się z http://java.sun.com/javase/6/docs/api/java/util/Comparator.html oraz http://java.sun.com/javase/6/docs/api/java/lang/Comparable.html

1 użytkowników online, w tym zalogowanych: 0, gości: 1