# cannot be cast to java.lang.Comparable



## marsch22 (21. Okt 2011)

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)


```
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));
		}
	}
```


----------



## jgh (21. Okt 2011)

mmh, wenn ich deinen Code ausführe erhalte ich:

[Bild 0.5, Mad Magazine 2.5, Spiegel 4.0, Gamestar 5.5]


----------



## bygones (21. Okt 2011)

sollte alles passen ?!

selbe bei mir wie mein vorposter


----------



## SlaterB (21. Okt 2011)

wenn irrerweise ein Interface Serializable selber angelegt wird, kann man das fast auch für Comparable vermuten,
wobei nicht gepostet, und das müsste generisch sein, recht schwierig..

Arrays.sort() würde sich jedenfalls nicht für das eigene Interface interessieren sondern nur für  java.lang.Comparable


----------



## Gast2 (21. Okt 2011)

Hast du irgendwo noch alte class Files rumliegen?


----------



## marsch22 (21. Okt 2011)

im anderen Package gehts,
ok


----------

