S
Spacerat
Gast
Hallo...
Ich hab' jetzt 'ne Sorge, mit der ich nicht unbedingt klar komme. Und zwar habe ich mir bei BufferedImage, ColorModel, SampleModel usw. folgende Sache abgeschaut und relativ oft verwendet:
oder
Das ist 'ne Art Object-ReUse mit unbestimmten Datentypen und funktioniert auch unheimlich gut (mit Buffern, primitiven Arrays und Wrapperarrays). Nun aber erweist sich in Klassen, wo man so etwas verwendet eine Kleinigkeit als äusserst fatal. Im Beispiel verwende ich ein int Array mit 3 Elementen. Wenn ich jetzt einen einzigen Integer 3 mal übergeben will, dachte ich mir, das könnte man so machen:
Aber genau da habe ich mich verzockt. Wenn ich diese Methode aufrufen will (in Eclipse wird diese auch als Verweis angezeigt) boxed die JVM den "singleInt" in Integer-Wrapper und ruft die Object-Implementierung sofort auf, aber warum macht sie das?
Ich hab' jetzt 'ne Sorge, mit der ich nicht unbedingt klar komme. Und zwar habe ich mir bei BufferedImage, ColorModel, SampleModel usw. folgende Sache abgeschaut und relativ oft verwendet:
Java:
Object getData(Object transferContainer)
{
if(transferContainer == null) {
transferContainer = new int[3];
}
if(transferContainer instanceof byte[]) {
// fill object with bytes...
} else if(transferContainer instanceof int[]) {
// fill object with ints...
} else {
// tell user, that transferContainer isn't supported
}
return transferContainer.
}
Java:
void setData(Object transferContainer)
{
if(transferContainer == null) {
throw new NullPointerException();
}
if(transferContainer instanceof byte[]) {
// copy data from bytes...
} else if(transferContainer instanceof int[]) {
// copy data from ints...
} else {
// tell user, that transferContainer isn't supported
}
}
Java:
void setData(int singleInt)
{
setData(new int[] {singleInt, singleInt, singleInt});
}
Zuletzt bearbeitet von einem Moderator: