methode in class file ansprechen?

  • Themenstarter Themenstarter seppl
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
S

seppl

Gast
hallo zusammn
ich bin relativ neu in java und da habe ich folgende zeile in einem sourcecode gesehen die ich nicht verstehe:
Code:
public static final String	Name = MainService.class.getName();

den in der klasse MainService ist die methode getName() aber gar nicht verhanden. wieso gibt es im class file eine methode die in der klasse des class files gar nicht vorhanden ist? wieso spricht man das class file an und nicht etwa die klasse?

thx

grüssle seppl
 
Code:
MainService.class
macht das gleiche wie
Code:
MainService m;
m.getClass();
und die Methode 'getName()' ist in der Klasse Class implementiert.

Die API hat gesagt.:
Returns the name of the entity (class, interface, array class, primitive type, or void) represented by this Class object, as a String.
If this class object represents a reference type that is not an array type then the binary name of the class is returned, as specified by the Java Language Specification, Second Edition.

If this class object represents a primitive type or void, then the name returned is a String equal to the Java language keyword corresponding to the primitive type or void.

[...]
 
hmm ich bin verwirrt :shock:

verstehe ich das richtig, dass man mit
Code:
public static final String   Name = MainService.class.getName();
den namen eines objektes der klasse MainService herausfindet?

grüessle seppl
 
Nein, man findet den Namen der Klasse selbst (Klasse und Objekt sind etwas ganz verschiedenes, so wie Bauplan und Haus was verschiedenes sind).

Das ".class" ist ein Feature der Sprache Java selbst, und funktioniert ausschliesslich fuer den Erhalt eines "Class-Objektes".
 
ich versteh nicht was ein class objekt ist. was stellt es dar? wan und wie muss ich es anwenden?

...the entity (class, interface, array class, primitive type, or void)
...eine instanz (klasse, interface, arrayklasse.....)

eine instanz einer klasse ist doch ein objekt? diese objekt simuliert nur eine klasse? lieg ich da völlig falsch?
:roll: :bahnhof: ???:L
 
habs mal versucht zu übersetzten:
Instanzen der Klasse class stellen Klassen und Interfaces in einer laufenden Javaanwendung dar. Jedes Array gehört auch einer Klasse, die als KlassenObjekt reflektiert wird, der durch alle Arrays mit der gleichen Elementart und Dimension geteilt wird. Die primitiven Javaarten (boolean, byte, char, short, int, long, float, and double) und das Schlüsselwort void werden auch als KlassenObjekte dargestellt.

naja, wirklich ganz versteh ich das immer noch nicht. hat vlt. jemand ein ein beispiel oder eine übung zum thema?

mfg
 
Du liegst richtig. Wenn in Java alles ein Objekt ist (außer den Primitivtypen :/ ), sind auch Klassen Objekte. Für jede Klasse kannst du eine Instanz vom Typ java.lang.Class entweder mit Object#getClass() oder mit Class.forName ("Klassenname") oder, wenn es schon zur Laufzeit bekannt ist, mit Klassenname.class kriegen. Mit dem kann man außer dem Namen auch noch einiges anfangen (nennt sich Reflection), wie einen neue Instanz zu erzeugen, Methoden aufzurufen, Felder abzufragen usw. Auch interfaces und enums haben übrigens ein Class-Objekt.
Edit: Wie du gerade geschrieben hast, übrigens auch Arrays, Primitivtypen und Void.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben