Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino
Problem mit createSession
flaite:
Ralf,
achso. Jetzt beginne ich zu kapieren.
Wenn er Methoden mit diesen Signaturen
(null, String, String)
oder
(String, String, String)
zur Auswahl hat, dann nimmt er mit (String) null Auswahl 2 und mit null Auswahl 1.
Du kannst aber in Java z.B. keine Methode mit der Signatur null erzeugen. Das läßt der Compiler nicht durch. Wenn du eine Methode mit der Signatur (Object val) nimmst und eine gleichnamige Methode mit String als Signatur nimmt er die mit String.
String ist eine finale Klasse. Wenn es eine spezifischere vererbte Klasse von String gäbe, würde Methode method (StringVererbt) aufgerufen.
Leicht verwirrend, aber es ist so.
in normalen Java:
--- Code: ---System.out.println("3.a Gegentest. Aufruf mit null, ungecastet");
callMeWithStringParam(null);
--- Ende Code ---
ruft diese Methode auf:
--- Code: ---private static void callMeWithStringParam(String param) {
System.out.println("callMeWithStringParam(String param) aufgerufen");
}
--- Ende Code ---
und nicht die, auch wenn die vorhanden ist:
--- Code: ---private static void callMeWithStringParam(Object param) {
System.out.println("callMeWithStringParam(String param) aufgerufen");
}
--- Ende Code ---
...weil nämlich String extends Object. In solchen Situationen wird die spezifischere Klasse ausgewählt.
Das hier...
--- Code: ---private static void callMeWithStringParam(String param) {
System.out.println("callMeWithStringParam(String param) aufgerufen");
}
private static void callMeWithStringParam(StringBuffer param) {
System.out.println("callMeWithStringParam(String param) aufgerufen");
}
--- Ende Code ---
... läßt der Compiler nicht durchgehen (ambigious), da keine der Klassen von der anderen erbt.
Und der Aufruf der Methode wird erst während der Laufzeit (nicht beim compilen) aufgelöst (late binding).
Ich frag mich nach wie vor wie die das hingekriegt haben.
Gruß Axel
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln