Erste Schritte Filter für Generics oder ähnliches

cuanu

Mitglied
Hallo,

ich suche eine Möglichkeit für Methoden in einer Klasse eine Teilmenge aller Möglichen objects als Parameter zu übergeben.

Beispiel: Ich möchte z.B. Zahlen sortieren. Anbei ein mehr schlecht als rechtes Beispiel eines Quicksorts aber es müsste als Beispiel ausreichend sein.
Code:
public class Quicksort {
	
	public static int[] sortInteger(int[] list){
		int n = list.length;		
		do
		{
			for(int i = 0; i<n-1; i++)
			{
				if(list[i] > list[i+1])
				{ 
					list = changePosition(list, i, i+1);
				}
			}
			n--;
		} while (n != 1);	
		
		return list;
	}	
	
	private static int[] changePosition(int[] list, int i1, int i2){
		int m = list[i1];
		list[i1] = list[i2];
		list[i2] = m;
		
		return list;
	}
}
Ich suche nun eine Möglichkeit nicht nur int[] zu übergeben sondern auch alle anderen ZahlenTypen wie z.B. double, float, long, short u.v.m.

Mein erster Ansatz waren Generics. Hier würden aber z.B. auch Konstrukte wie Quicksort<IrgendeineKlasse> zugelassen sein die ich ja ungerne haben möchte.
Gibt es hier also eine Möglichkeit einen Filter einzubauen? Oberklasse von allen Zahlen?
Dies würde dann aber wohl List<Integer> oder ähnliches wieder nicht zulassen.

Mein zweiter Ansatz war es, für jeden Datentypen eine Methode zur Verfügung zu stellen. Was bei dem obigen Beispiel vielleicht noch machbar wäre aber vom Prinzip eher suboptimal weil ich sehr viel Redundanz bekommen würde.

MfG cuanu
 
- Dazu musst du in die Java API schauen.
- Du gehst auf z.B. auf Integer. (Integer (Java Platform SE 6))
- Dort siehst du links oben, dass Integer von Number erbt. (Number (Java Platform SE 6))
- In Number findest du wieder links oben noch das Attribut "Direct Known Subclasses".
- Dort siehst du, welche Klassen von Number ableiten: AtomicInteger, AtomicLong, BigDecimal, BigInteger, Byte, Double, Float, Integer, Long, Short
 
Du könntest einfach deine Werte als object übergeben und dann mittels instanceof prüfen, um was für einen Datentyp es sich handelt und dann damit gecastet weiterarbeiten.
Zum Problem mit den Listen: Dazu müsstest du dann die Methoden überladen.
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben