Woher kommt diese Eigenschaft

Bitte aktiviere JavaScript!
Ich lese gerade (mal wieder) das Buch "Java ist auch eine Insel".
Und im Abschnitt über "instanceof" kommt der Codeausschnitt
Code:
o.getClass() == Object.class
vor.

Aber woher kommt die Eigenschaft class (bei Object.class).
In java.lang.Object steht sie nicht.
 
Hallo, bin neu hier und möchte mich hier gleich mal dranhängen. Ich lese ebenso gerade das Buch, "Java ist auch eine Insel" - openbook und stehe bei folgendem Code an (3 Klassen und Objekte, 3.7.4 Methoden mit Referenztypen als Parametern).

folgender Codeausschnitt ist mir klar (Listing 3.14 JavaIsAlwaysCallByValue.java):
Code:
import java.awt.Point;
public class JavaIsAlwaysCallByValue {
  static void clear( Point p ) {
    System.out.println( p );  // java.awt.Point[x=10,y=20]
    p = new Point();
    System.out.println( p );  // java.awt.Point[x=0,y=0]
  }

  public static void main( String[] args ) {
    Point p = new Point( 10, 20 );
    clear( p );
    System.out.println( p );  // java.awt.Point[x=10,y=20]
  }
}
Was mir jedoch nicht klar ist, ist jener Codeausschnitt:

Code:
static void clear( Point p ) {
  p.x = p.y = 0;
}
Warum funktioniert das? Warum wird p (die ich in der main-Methode erzeugt habe) beim Aufruf von clear(p) verändert, wenn die Methode clear(p) nur void ist und keine Rückgabe liefert... Wenn ich die Methode clear implementieren würde, würde sie so aussehen:

Code:
static Point clearObj(Point p) {
  p.x = p.y = 0;
  return(p);
}

public static void main(String[] args) {       
  Point p = new Point(10,20);
  p = clearObj(p);
  System.out.println(p);
}
Es funktioniert natürlich auch so... aber dennoch wundert es mich, warum es in der ersten Methode clear(p) ebenso funktioniert.

Bin für jede Antwort dankbar :) LG Nexialist
 
Warum wird p (die ich in der main-Methode erzeugt habe) beim Aufruf von clear(p) verändert, wenn die Methode clear(p) nur void ist und keine Rückgabe liefert...
Wenn Du mir Dein Sparschwein des Typs
Java:
class Sparschwein {
    int inhalt;
}
hinhältst und mir sagst, dass ich es leeren soll
Java:
public void leere(Sparschwein s) {
    s.inhalt = 0;
}
dann entsteht weder ein neues Sparschwein, noch brauche ich Dir das Sparschwein zurück zu geben - ich habe es ja nie besessen.

Anders formuliert: p ist eine Referenz auf ein Objekt des Typs Point und x, y sind veränderliche Attribute des Objekts. Du übergibst eine Referenz auf das Objekt (nicht das Objekt selbst) an eine Methode, die Methode ändert die Attribute (genauer: die Attributwerte) des durch p referenzierten Objekts, und das war's.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben