2016-04-04 2 views
3

この例をリファクタリングして、すべてのデータ型でisInstanceをチェックする必要があるような状況を回避するにはどうすればよいですか?私が従うことができるパターンはありますか?isInstance文を避ける

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); 
    }; 
} 

答えて

7

あなたは笑...私は、コードの構造のいくつかの重いの変化を期待していたが、Javaはそれが簡単に作られたジェネリック

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

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

を使用することができます –