2016-04-04 11 views
3

Wie kann ich dieses Beispiel umgestalten, um diese Art von Situation zu vermeiden, die ich IsInstance in jedem Datentyp überprüfen muss? Gibt es ein Muster, dem ich folgen kann?Vermeidung von isInstance-Anweisung

public interface GenericData {} 

public interface IntegerData extends GenericData{ 
    public Integer Data(); 
} 

public interface StringData extends GenericData{ 
    public String Data(); 
} 

public interface Client { 
    public boolean LoadData(GenericData data); 
} 

public class IntegerClientImpl implements Client{ 
    public boolean LoadData(GenericData data){ 
     return IntegerData.class.isInstance(data); 
    }; 
} 

Antwort

7

Sie können Generika verwenden

public interface Client<Data extends GenericData> { 
    public boolean LoadData(Data data); 
} 

public class IntegerClientImpl implements Client<IntegerData> { 
    @Override 
    public boolean LoadData(IntegerData data){ 
     // ... 
    } 
} 
+1

ich einige schwere Veränderung in der Codestruktur erwartet, aber Java machte es leichter ... hehe –

Verwandte Themen