# Comparable + Generics Problem



## bl4ck29 (27. Juni 2005)

das ist das Problem....

```
Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
 
Bound mismatch: The generic method sort(List<T>) of type Collections is not applicable for the arguments (List<ListEntry>) since the type ListEntry is not a valid substitute for the bounded parameter <T extends Comparable<? super T>>
```
so sieht der code dazu aus

```
private List<ListEntry> list;
 
	public SortList(){
		list = new ArrayList<ListEntry>();
	}
........................
	public void updateOrder(){
		Collections.sort(list);
	}
```
die Collections.sort(list); schmeisst die exception, wenn ich die generics weg lass funktioniert es 1a, aber dann muss ich immer casten. und ListEntry implements Comparable natürlich

ich versteh nicht wie ich das beheben kann.....ich hoffe es versteht wer was dort flasch läuft

mfg


----------



## Thomas Darimont (28. Juni 2005)

Hallo!



> Bound mismatch: The generic method sort(List<T>) of type Collections is not applicable for the arguments (List<ListEntry>) since the type ListEntry is not a valid substitute for the bounded parameter <T extends Comparable<? super T>>


   ... im Prinzip sieht man ja da schon wo es klemmt...

     Schau mal hier:

```
package de.tutorials;
 
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
 public class GenericCollectionSortExample {
 
 	/**
 	 * @param args
 	 */
 	public static void main(String[] args) {
 		new GenericCollectionSortExample().doIt();
 	}
 
 	private void doIt() {
 		List<ListEntry> entries = new ArrayList<ListEntry>();
 		
 		entries.add(new ListEntry("B"));
 		entries.add(new ListEntry("C"));
 		entries.add(new ListEntry("A"));
 		
 		Collections.sort(entries);
 		
 		System.out.println(entries);
 	}
 	
 	class ListEntry implements Comparable<ListEntry>{
 		String data;
 		public ListEntry(String data){
 			this.data = data;
 		}
 	
 		public String toString() {
 			return data;
 		}
 
 		public boolean equals(Object obj) {
 			if(obj == this){
 				return true;
 			}
 			
 			if(!(obj instanceof ListEntry)){
 				return false;
 			}
 			
 			return this.data.equals(((ListEntry)obj).data);
 		}
 
 		public int hashCode() {
 			return this.data.hashCode();
 		}
 
 		public int compareTo(ListEntry o) {
 			return this.data.compareTo(o.data);
 		}
 	}
 }
```
 
     Gruß Tom


----------



## bl4ck29 (28. Juni 2005)

ah schönen dank, ich hatte keine ahnung das man dort oben auch generics eintragen kann/muss und somit das object der übergabe für compareTo festlegt

mfg


----------

