Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich verstehe das nicht: Wie kann denn der Rückgabetyp einer Funktion ein Interface sein, z.B. java.sql.Connection bei DriverManager.getConnection()?
Edit:
Wird das so gemacht?:
Java:
return new Connection() { /* implementation der funktionen */ }
Und was müsste ich tun, wenn ich diese Klasse, die von der Funktion zurückgegeben wird ableiten/erweitern will? Ich weiß ja gar nicht was es für eine Klasse ist. Und das ganze Interface Connection selbst implementieren ist doch unnötiger Aufwand...
Was genau ist denn Unklar? Dir wird garantiert, dass irgendeine Art Connection zurückgegeben wird, Details brauchen dich als Benutzer der Klasse nicht weiter zu interessieren. Sowas gibt es überall, es ermöglicht dem Entwickler der Klasse die konkrete Implementierung schnell auszutauschen, ohne an den Methodenköpfen irgendwas zu ändern.
Edit:
Wird das so gemacht?:
Java:
return new Connection() { /* implementation der funktionen */ }
Bei Connection eher Unwahrscheinlich, dafür ist dieses Interface viel zu groß und unübersichtlich. Bei kleinen Interfaces wie Iterable oder Runnable verwende ich das aber sehr gerne.
Und was müsste ich tun, wenn ich diese Klasse, die von der Funktion zurückgegeben wird ableiten/erweitern will? Ich weiß ja gar nicht was es für eine Klasse ist.
im einem speziellen Fall kannst du dir die exakte Klasse mit
System.out.println(object.getClass());
ausgeben lassen und dann überlegen, ob du diese erweitern kannst
eine JTable wird das Interface TableModel liefern, was oftmals dann konkret ein DefaultTableModel ist,
manchmal aber auch eine recht unbekannte innere Klasse, je nachdem ob man die Daten als Object[] oder Vector im Konstruktor übergeben hat
naja...
ich wollte ursprünglich die Klasse erweitern, die mir die Funktion DriverManager.getConnection() zurückgibt. Also nicht das Interface selbst implementieren, sondern die schon implementierte Version erweitern.
... um damit ein Connection Singleton zu machen; aber jetzt bin ich wieder auf das Connection Pooling gestoßen, das man in so nem Fall ja macht. Also hat sich das wohl erübrigt.
Und des mit dem Interface versteh ich jetzt glaub ich!
Danke schon mal.
im einem speziellen Fall kannst du dir die exakte Klasse mit
System.out.println(object.getClass());
ausgeben lassen und dann überlegen, ob du diese erweitern kannst
ah ok... das muss ich mal ausprobieren
weißt du zufällig auswendig, was getClass() zurückgibt, wenn man das Interface wie oben implementiert? also return new Interf() { ... };
ich wollte ursprünglich die Klasse erweitern, die mir die Funktion DriverManager.getConnection() zurückgibt. Also nicht das Interface selbst implementieren, sondern die schon implementierte Version erweitern.
Erweitern kannst du gerne was du willst, nur wird's nichts an dem ändern, was dir der DriverManager zurückliefert... Höchstens die zurückgegebene Connection wrappen würde noch gehen.
ah ok... das muss ich mal ausprobieren
weißt du zufällig auswendig, was getClass() zurückgibt, wenn man das Interface wie oben implementiert? also return new Interf() { ... };