Hallo
Ich habe eine Klasse (Vektor) erst einmal ohne Generics Programmirt (intern double), jetzt Wollte ich die Klasse mit Generics Ausstatten. Da stoße ich auf ein paar Probleme. (so gut kenne ich mich bei der Entwicklung noch nicht aus, nur beim Benutzen)
Ersteinmal der Klassen Rumpf und zwei Feldern.
Zu dem „Haupt“ Konstruktoren:
Erstellt man ein Array des Types T auch so wie bei mir im Code?
Wenn ich den einzelnen Elementen des Arrays etwas zuweise muss ich sie wohl jetzt Clonen?
Jetzt eine Frage zum Rechnen, was allgemein so aussieht:
(So ist das noch nicht richtig)
Entweder wie kann ich ein „instanceof“ machen oder schöner gibt es eine Möglichkeit mit „Number„ allgemein zu rechnen?
Ich habe eine Klasse (Vektor) erst einmal ohne Generics Programmirt (intern double), jetzt Wollte ich die Klasse mit Generics Ausstatten. Da stoße ich auf ein paar Probleme. (so gut kenne ich mich bei der Entwicklung noch nicht aus, nur beim Benutzen)
Ersteinmal der Klassen Rumpf und zwei Feldern.
Java:
public class Vektor<T extends Number> implements Cloneable {
public T[] daten;
public final int length;
}
Zu dem „Haupt“ Konstruktoren:
Java:
@SuppressWarnings("unchecked")
public Vektor(int n){
Class<?> h = Number.class;
daten = (T[]) Array.newInstance( h, n );
//T[] array = (T[])new Object[n];
//daten = array;
length = n;
}
Wenn ich den einzelnen Elementen des Arrays etwas zuweise muss ich sie wohl jetzt Clonen?
Jetzt eine Frage zum Rechnen, was allgemein so aussieht:
Java:
@SuppressWarnings("unchecked")
public static <T extends Number> Vektor<T> operation(Vektor<T> a, Vektor<T> b, Operation op)
{
if (a.length != b.length){
throw new UnequalLengthException();
}
int n= a.length;
Vektor<T> ret = new Vektor<T>(n);
for(int i = 0;i < n;i++){
Double d=null;
switch (op){
case ADD:
d= (Double) (a.daten[i].doubleValue() + b.daten[i].doubleValue());
break;
case MUL:
d = a.daten[i].doubleValue() *b.daten[i].doubleValue();
break;
}
ret.daten[i] = (T) d;
}
return ret;
}
Entweder wie kann ich ein „instanceof“ machen oder schöner gibt es eine Möglichkeit mit „Number„ allgemein zu rechnen?