2016-04-04 122 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

您可以使用泛型

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

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

我期待在代碼結構的一些重的變化,但Java使得它更容易......嘿嘿 –