ERLEDIGT
JA
JA
ANTWORTEN
7
7
ZUGRIFFE
388
388
EMPFEHLEN
-
hallo leute
bitte helft mir bin jetzt dann am durchdrehen.
ich hab ein interface und etwa 6 versch klassen die davon methoden implementieren.
nun muss ich ein property namens prop da übergeben (für die methode store) da ich dieses teil brauche für EINE von diesen klassen. die anderen fünf klassen brauchen das store vom interface aber ohne property. das heisst ich kann prop nicht einfach im interface der methode übergeben.
jetzt hat mir jemand gesagt dass ich das mit einem object machen soll nur wie und wo? sodass das object nur dann aufgerufen wird wenn man es braucht..
bitte helft mir..
:-/
tinella
-
Du kannst die Methode store im interface so definieren, dass sie ein Parameter vom Typ Object erwartet. Bei Aufruf der Methode an den fünf Klassen übergiebst Du null.
An der einen Klasse übergibst Du Deine Property.
In der Methode store in der einen einzigen Klasse überprüfst Du, ob das Object von dem Typ ist, den Du erwartest und machst dann einen typecast.
Ich mache dann immer noch folgendes:
Wenn es der falsche Typ ist suchst Du Dir in der JavaAPI 'ne hübsche Exception, z.B. IllegalArgumentException und schmeißt diese.
Aufrufende Klassen sollten darauf rücksicht nehmen und diese evtl. abfangen und sinnvoll verarbeiten.
Gruß hpvw
-
12.11.04 17:19 #3
- Registriert seit
- Oct 2004
- Ort
- Hessen
- Beiträge
- 310
Ansonsten, definierst du halt 2 Methoden store eine mit argument und eine ohne.
public void store();
public void store(Object obj);
und lässt diese funktion einfach leer bei den anderen Klassen.
Ist zwar kein schöner stil, aber auch wirksam.
Oder hab ich das problem nicht ganz verstanden?
Grüsse
Torsten.Geändert von torsch2711 (12.11.04 um 17:32 Uhr)
"There's nothing we have to fear, except Fear itself....."
-
12.11.04 18:38 #4
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Falls die "anderen" Klassen von keine Klasse (außer Object
erben) könntest du auch eine abstrakte Klasse erstellen, welche die Methode store() als abstract deklariert und die Methode store(blabla ddd) mit einer default Implementierung ausstattest. Diese kannst du dann bei deiner "einen" Klasse wie gewünscht überschreiben.
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
zu Thomas Darimont:
Die Defaultimplementierung sollte dann die abstrake Methode store() aufrufen.
So kann es nicht passieren, dass man an einer Subklasse eine Methode aufrufen kann, die nichts "sinnvolles" tut.
-
12.11.04 20:09 #6
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Die Default-Implementierung könnte aber auch eine UnsupportedOperationException werfen.
IMHO ist das sogar die bessere Wahl denn wenn man store(blabla ...) aufruft will man ja genau DIE Aktion durchführen für die store(blabla...) gedacht ist und nicht store() (kommt auf die Implementierung an)
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Da wir natürlich nicht genau wissen, wofür die Methoden gedacht sind, kann darüber sicher lange diskutieren.
Das eine in der abstrakten Klasse definierte Methode per default eine UnsupportedOperationException wirft würde mich als Implentierer einer Subklasse ganz schön wundern.
Das kommt sicher ein bisschen auf den eigenen Programmierstil an.
Wenn ich 2 Methoden den gleichen Namen gebe und sie nur durch ihre Parameter zu unterschieden sind, dann sollen sie im Prinzip dasselbe tun, nur halt einmal mit Parameter und einmal ohne. Dann halte ich es für sinnvoll, dass die Mächtigere im Zweifel die weniger Mächtige aufruft. Mit Konstruktoren macht man das ja auch oft so.
Aber es gibt sicher viele Möglichkeiten und man kann wohl selten eine als falsch oder ultimative Lösung einstufen.
Gruß hpvw
-
hallo..
vielen dank ihr habt mir hiermit ziemlich geholfen..
nen schönen tag noch!
tinella
Ähnliche Themen
-
JUnit: The method assertEquals(Object, Object) is ambiguous
Von DarthShader im Forum JavaAntworten: 4Letzter Beitrag: 24.10.10, 10:37 -
Java Reflection Object ein Interface implemetieren
Von raphael_fehlmann im Forum JavaAntworten: 10Letzter Beitrag: 05.09.10, 14:43 -
Object reference not set to an instance of an object.
Von ivanZ im Forum .NET CaféAntworten: 1Letzter Beitrag: 12.11.08, 11:42 -
Fehlermeldung: Object reference not set to an instance of an object.
Von deen_90 im Forum .NET DatenverwaltungAntworten: 5Letzter Beitrag: 28.08.07, 20:03 -
"Call to a member function on a non-object", obwohl es ein Objekt ist
Von Azi im Forum PHPAntworten: 6Letzter Beitrag: 10.03.06, 03:03





Zitieren

Login





