Hallo liebe Community,
meine folgende frage ist eine reine Verständnisfrage. Ich frage mich zur zeit warum es in Java keine Operatorüberladungen gibt? Denn überall liest man das Java dies nicht unterstützt aber WARUM(?) steht nirgends, daher wende ich mich vertrauensvoll an Euch
Da ich derzeit ein Projekt entwickle in dem ich eigene 2D-Vector und Matrizen implementiere bin ich nun an diesen Punkt gestoßen wo es mir nicht ganz klar wird was dahinter steckt. Will Sun das entwickeln eigener Datentypen, mit den man einfache arithmetische/logische Operationen durchführen kann, nicht unterstützen? Hat Sun es bei der Entwicklung von Java vielleicht nur „vergessen“ und führt es dennoch nicht ein um beim Ursprung zu bleiben?
Ich mein, es wird doch keine grundlegende Änderung der Sprache nach sich ziehen, das einzige wäre imho im Compiler etwas einzubauen was solche operationen und die in der Klasse definierten Methoden umzuschreiben und so wieder beim alten zu landen.
Kleines Verständnisbeispiel:
public class Typ
{
private int m_v1;
private int m_v2;
public void operator+=( Typ t ) {
this.m_v1 += t.getV1();
this.m_v2 += t.getV2();
}
}
// Bsp des Aufrufes
Typ t1 = new Typ( 2, 3 );
Typ t2 = new Typ( 4, 5 );
t1 += t2;
Das könnte doch imho der Compiler dann folgend umschreiben:
// umgeschriebene Klasse
public class Typ
{
private int m_v1;
private int m_v2;
public void operator_add( Typ t ) {
this.m_v1 += t.getV1();
this.m_v2 += t.getV2();
}
}
// umgeschriebener Aufruf
Typ t1 = new Typ( 2, 3 );
Typ t2 = new Typ( 4, 5 );
t1.operator_add( t2 );
Warum geht das nicht? Bzw warum hat Sun das nie vorgesehen? Hoffe ihr könnt mir diese Frage beantworten, vllt sogar mit einer Begründung warum?
Gut Schuß
VuuRWerK