Generices

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Dieses Klasse erzeugt mir die Warnung.
"Comparable is a raw type. References to generic type Comparable<T> should be parameterizd."

Code:
public class Key implements Comparable {

	@Override
	public int compareTo(Object obj) {
		
		return 0;
	}

}


Wie bringe ich diese Warnung weg? Ist diese Warnung überhaupt sinnvoll?
Ich habe doch einige Zweifel mit diesen Generic types.
 
G

Gelöschtes Mitglied 5909

Gast
implements Comparable<Key>

compareTo(Key key)
 
G

Guest

Gast
Vielen herzlichen Dank für die Unterstützung.
Wie soll ich dies lösen? Ich habe auch
andere Schreibweisen ausprobiert.

Die Zuweisung elements = new Element[capacity];
im Konstruktor Array liefert die folgende Warnung.

Type safety: The expression of type Array.Element[] needs unchecked conversion
to conform to Array.Element<T>.

Code:
package java.util;

public class Array<T> {

	private int capacity;
	
	private Element<T>[] elements;
	
	public Array(int capacity) {
		
		this.capacity = capacity;
		elements = new Element[capacity];
	}
	
	static class Element<T> {
		
		private T t;
		
		public Element(T t) {
		
			this.t = t;
		}
	
		public T getT() {
			
			return t;
		}
	}
}
 
G

Guest

Gast
Weiteres Problem wie schreibe ich einen generischen Array
der sich automatisch sortiert.
Ich gehe davon aus ich kann dies nur für Arrayelemente
machen die das Comparable Interface implementieren.
Hier scheitere ich kläglich. Mein anfänglicher Versuch
seht Ihr hier.
Ich möchte nur eine Klasse die die Schnittstelle Comparable
implementiert in einen sortierten generischen Array.
In diesem Beispiel hat die Klasse S
die Method
int compareTo(T t)
Ich möchte aber gerne eine compare Methode
int compareTo(S s)
um S Objekte zu vergleichen.
Es gelingt mir aber nicht.

Code:
public class SortedArray<T, S extends Comparable<T>> {

	private int size;
	
	private Element<T, S>[] elements;

//	@SuppressWarnings("unchecked")
	public SortedArray(int size) {
		
		this.size = size;
		elements = new Element[size];
	}
	
//	@SuppressWarnings("unchecked")
	public void add(S s) {
	
		int i;
		while (i < size && s.compareTo(elements[i].getS()) >= 0)
			i++;
		if (i < size) {
			System.arraycopy(elements, i, elements, i + 1, size - i - 1);
			elements[i] = new Element(s);
		}
	}
	
	public S get(int index) {
		
		if (index < size) {
			return elements[index].getS();
		}
		
		return null;
	}
	
	static class Element<T, S extends Comparable<T>> {

		private S s;
		
		public Element(S s) {
		
			this.s = s;
		}
	
		public S getS() {
			
			return s;
		}
		
	}

}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben