![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 | ||
Veteran
![]() Registriert seit: 11.03.2001
Alter: 48
Beiträge: 327
|
![]() Hi wieder mal!
Ich arbeite nach wie vor an einem Java Client für Amazon web Services (hatte da schon mal ein Problem gepostet). Ich habe jetzt ein kleines Problem, hier ein Ausschnitt aus meinem Programm: Code:
String directive = args[0]; Object searchObject; if (directive.equals("actor")) { searchObject = new ActorSoap(); } else if (directive.equals("artist")) { searchObject = new ArtistSoap(); } else if (directive.equals("asin")) { searchObject = new AsinSoap(); } else if ... } else { showUsage(); } searchObject.setParameter("Dev-Tag",DEVTOKEN); searchObject.setParameter("Mode","books"); searchObject.setParameter("Keyword",keyword); Allerdings bekomme ich beim Versuch, das Programm zu kompilieren, immer die Fehlermeldung Zitat:
Wenn ich die Zeile Object searchObject; rauslösche, und den Rest so abändere Code:
String directive = args[0]; String keyword = args[1]; if (directive.equals("actor")) { ActorSoap searchObject = new ActorSoap(); } else if (directive.equals("artist")) { ArtistSoap searchObject = new ArtistSoap(); } else if (directive.equals("asin")) { AsinSoap searchObject = new AsinSoap(); } else if ... } else { showUsage(); } searchObject.setParameter("Dev-Tag",DEVTOKEN); searchObject.setParameter("Mode","books"); searchObject.setParameter("Keyword",keyword); Zitat:
Wahrscheinlich ist die Lösung eh simpel, aber ich bin leider nicht sehr Java-erfahren und deshalb für jede Hilfe dankbar! ![]() |
||
![]() |
![]() |
![]() |
#2 |
Elite
![]() |
![]() es geht auf zwei arten
Code:
String directive = args[0]; Object searchObject; if (directive.equals("actor")) { searchObject = new ActorSoap(); ((ActorSoap)searchObject).setParameter("Dev-Tag",DEVTOKEN); ((ActorSoap)searchObject).setParameter("Mode","books"); ((ActorSoap)searchObject).setParameter("Keyword",keyword); } else if (directive.equals("artist")) { searchObject = new ArtistSoap(); ((ArtistSoap)searchObject).setParameter("Dev-Tag",DEVTOKEN); ((ArtistSoap)searchObject).setParameter("Mode","books"); ((ArtistSoap)searchObject).setParameter("Keyword",keyword); } else if (directive.equals("asin")) { searchObject = new AsinSoap(); ((AsinSoap)searchObject).setParameter("Dev-Tag",DEVTOKEN); ((AsinSoap)searchObject).setParameter("Mode","books"); ((AsinSoap)searchObject).setParameter("Keyword",keyword); } else if ... } else { showUsage(); } schöner wärs wenn du eine (vielleicht abstrake) oberklasse (bzw auch interface) soap hast, die die methode setparameter definiert alle *Soap sind dann extends Soap (bzw implements Soap) dann gehts mit Code:
String directive = args[0]; Object searchObject; if (directive.equals("actor")) { searchObject = new ActorSoap(); } else if (directive.equals("artist")) { searchObject = new ArtistSoap(); } else if (directive.equals("asin")) { searchObject = new AsinSoap(); } else if ... } else { showUsage(); } ((Soap)searchObject).setParameter("Dev-Tag",DEVTOKEN); ((Soap)searchObject).setParameter("Mode","books"); ((Soap)searchObject).setParameter("Keyword",keyword);
____________________________________
Whoever built humanity left in a major design flaw: it was the tendency to bend at the knees. |
![]() |
![]() |
![]() |
#3 |
Veteran
![]() Registriert seit: 11.03.2001
Alter: 48
Beiträge: 327
|
![]() Vielen Dank!
Die Klassenstruktur ist glücklicherweise eh so, wie von dir vorgeschlagen: Es gibt ein Interface SoapQuery, dieses wird von AbstractSoapQuery implementiert, und die einzelnen Suchmodus-Klassen sind wiederum Subklassen von AbstractSoapQuery! Ich werd also die zweite Variante probieren. |
![]() |
![]() |
![]() |
#4 |
Hero
![]() |
![]() Dies ist ein klassischer Fall für die Verwendung von Interfaces:
Code:
public interface SoapInt { public int setParameter(String name1, String name2); } class ActorSoap implements SoapInt { ... } class ArtistSoap implements SoapInt { ... } class AsinSoap implements SoapInt { ... } String directive = args[0]; SoapInt searchObject; if (directive.equals("actor")) { searchObject = new ActorSoap(); } else if (directive.equals("artist")) { searchObject = new ArtistSoap(); } else if (directive.equals("asin")) { searchObject = new AsinSoap(); } else if ... } else { showUsage(); } searchObject.setParameter("Dev-Tag",DEVTOKEN); searchObject.setParameter("Mode","books"); searchObject.setParameter("Keyword",keyword);
____________________________________
Bibel |
![]() |
![]() |
![]() |
#5 | |
Senior Member
![]() |
![]() Bin zwar Java Newbie, aber für mich heisst die oberste Fehlermeldung das die Methode
setParameter() 2 Strings erwartet und das ist bei searchObject.setParameter("Dev-Tag",DEVTOKEN); nicht der Fall ![]() Zitat:
|
|
![]() |
![]() |
![]() |
#6 |
Elite
![]() |
![]() @hannes
final String DEVTOKEN = "devtoken"; und schon wärs erlaubt. @fink ja, stimmt. dreimaliges casten is net das gelbe vom ei. fällt mir auch grad auf. ganz vermeiden wirst den cast operator aber nur selten können
____________________________________
Whoever built humanity left in a major design flaw: it was the tendency to bend at the knees. |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|