"+"- operator für Java-Klassen
Habe ich eine Klasse wie folgt aus:
private static class Num {
private int val;
public Num(int val) {
this.val = val;
}
}
Ist es möglich, auf Objekte der Klasse mit der "+"-operator?
Num a = new Num(18);
Num b = new Num(26);
Num c = a + b;
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, das können Sie nicht.
+
überlastet ist nur für zahlen, chars undString
, und Sie sind nicht erlaubt zu definieren, zusätzliche überbeanspruchungen kommen.Es ist ein besonderer Fall, wenn Sie verketten können alle Objekte in string-Darstellung - wenn es ein
String
Objekt in den ersten zwei Operanden,toString()
genannt wird, auf alle anderen Objekte.Hier ist eine illustration:
String object somewhere
- nicht irgendwo. Es muss einer der ersten beiden Operanden, daa+b+c
analysiert, wie(a+b)+c
- und die plus-funktioniert nur, wenn mindestens einer der beiden Operanden ist deklariert als String. Das ist, warumo+o+s
kann nicht kompiliert werden, während die anderen beiden Permutationen zu tun.Nein, weil James Gosling sagte so:
Quelle: http://www.gotw.ca/publications/c_family_interview.htm
Referenz: Warum nicht Java bieten-operator überladen?
Nicht. Java unterstützt kein operator overloading (für Benutzer-definierte Klassen).
Gibt es keine Operatoren überladen in java.
Die einzige Sache, die unterstützt wird, die für Objekte, ist die string-Verkettungen über "+". Wenn Sie eine Sequenzen von Objekten verbunden, die über "+" und mindestens einer von Ihnen ist ein String, dann wird das Ergebnis inline-zu-String-Erstellung. Beispiel:
werden inline zu
+
ist ein besonderer Fall für Streicher, nur um das Leben leichter machen. Der compiler ersetzt den string concats mit string BauherrenNein, es ist nicht möglich, da Java unterstützt keine operator-überladung.