Casting umgehen

Status
Nicht offen für weitere Antworten.

dieta

Top Contributor
Ich habe eine Methode in der folgenen Form:

Code:
private JTextField e = new JTextField();

Object getInput()
{
    
    //...
    
}

Diese Methode soll verschiedene Objekte Ausgeben (mal einen int, mal einen String usw.). Das funktioniert auch ganz gut.

Meine Frage ist jetzt: Kann man dieses ewige Typencasting irgendwie umgehen ???:L ?
Ich hatte schon an generische Programmierung oder Reflection gedacht, aber wie würde man das damit machen :bahnhof: ?
 
Erstmals, ein int ist kein Object :wink:

Das muss man dann wohl irgendwie aufteilen, aber ich könnte mir sowas vorstellen:

Erstmals zwei generische Klassen/Interfaces
Code:
public interface Translator<T>{
  public T translate( String input );
}
Code:
public class InputField<T> extends JTextField{
  private Translator<T> trans;

  public InputField( Translator<T> trans ){
    this.trans = trans;
  }

  public T getInput(){
    return trans.translate( getText() );
  }
}

Und ein Beispiel wie es für Integer benutzt werden könnte:
Code:
public class IntegerTranslator implements Translator<Integer>{
  public Integer translate( String input ){
    return Integer.valueOf( input );
  }
}
Code:
...
InputField<Integer> intField = new InputField<Integer>( new IntegerTranslator() );

int value = intField.getInput();
...
 
Wenn er ein Objekt übergibt kann er sowieso gleich sagen object.toString() und er überschreibt bei seinen anderen Objekten die toString Methode! (bei Integer usw, wird ja eh der Inhalt ausgegeben?!) -- von daher wäre dein Code bisi umsonst 😉

Mit primitiven Datentypen gehts eh nicht...
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben