Hallo,
ich hab das Beispiel aus "Java ist auch eine Insel".
Mich würde mal interessieren was ich falsch gemacht habe.
Ich will das Objekt mit Arrays.sort() sortieren. Exception kommt.
Exception in thread "main" java.lang.ClassCastException: p1.Magazine cannot be cast to java.lang.Comparable
at java.util.ComparableTimSort.countRunAndMakeAscending(Unknown Source)
at java.util.ComparableTimSort.sort(Unknown Source)
at java.util.ComparableTimSort.sort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)
at p1.A12_Interface.main(A12_Interface.java:60)
ich hab das Beispiel aus "Java ist auch eine Insel".
Mich würde mal interessieren was ich falsch gemacht habe.
Ich will das Objekt mit Arrays.sort() sortieren. Exception kommt.
Exception in thread "main" java.lang.ClassCastException: p1.Magazine cannot be cast to java.lang.Comparable
at java.util.ComparableTimSort.countRunAndMakeAscending(Unknown Source)
at java.util.ComparableTimSort.sort(Unknown Source)
at java.util.ComparableTimSort.sort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)
at p1.A12_Interface.main(A12_Interface.java:60)
Java:
package p1;
import java.util.Arrays;
interface Serializable
{
}
interface Buyable {
double price();
}
abstract class GameObject implements Serializable
{
protected String name;
protected GameObject( String name )
{
this.name = name;
}
}
class Magazine extends GameObject implements Buyable, Comparable<Magazine>
{
private double price;
public Magazine( String name, double price )
{
super( name );
this.price = price;
}
@Override public double price()
{
return price;
}
@Override public int compareTo( Magazine that )
{
return Double.compare( this.price(), that.price() );
}
@Override public String toString()
{
return name + " " + price;
}
}
class A12_Interface {
public static void main(String args[]) {
Magazine m1 = new Magazine( "Spiegel", 4.0 );
Magazine m2 = new Magazine( "Mad Magazine", 2.50 );
Magazine m3 = new Magazine( "Bild", 0.50 );
Magazine m4 = new Magazine( "Gamestar", 5.50 );
Magazine[] mags = new Magazine[] { m1, m2, m3, m4};
Arrays.sort(mags);
System.out.println(Arrays.toString(mags));
}
}