2016-06-10 15 views
0

Ich möchte etwas wie das machen. Wie kann ich das in Java mit Generika schön machen?Java-Generics setzen String oder Integer-Argument in Methode

public <T [Integer or String]> Float getFloat(<T> column) throws SQLException{ 
    Float result; 

    try { 
     result = ResultSet.getFloat(column); 
    } catch (NullPointerException e) { 
     result = null; 
    } 
    return result; 
} 

Jetzt sieht mein Code wie folgt aus:

public Float getFloat(String column) throws SQLException{ 
    Float result; 

    try { 
     result = rs.getFloat(column); 
    } catch (NullPointerException e) { 
     result = null; 
    } 
    return result; 
} 
public Float getFloat(int column) throws SQLException{ 
    Float result; 
    try { 
     result = rs.getFloat(column); 
    } catch (NullPointerException e) { 
     result = null; 
    } 
    return result; 
} 

ich dies tun, weil Methode rs.getFloat() String empfangen kann (Spalte Label) & Integer (Spalte Index) nur. Aber das ist nicht wichtig für meine Methode.

+0

Es wäre möglich, lambdas zu verwenden: 'public Float getFloat (Funktion Funktion, T t)' aber wegen der geprüften Ausnahmen von JDBC wird es nicht viel Spaß machen, das zu tun, – user140547

Antwort

0

Dies scheint nicht ein guter Anwendungsfall für Generika, IMO. Sowohl String als auch Integer sind letzte Klassen, also gibt es hier nur 2 Möglichkeiten. Es scheint, als wäre es einfacher, die Methode zu überladen.

Sie können eine generische wie <T extends A & B> gebunden haben, aber ich habe keine Möglichkeit gefunden, | Operator für diese Art der Begrenzung zu verwenden.