【问题标题】:Avoiding isInstance statement避免 isInstance 语句
【发布时间】:2016-04-04 11:59:17
【问题描述】:

如何重构此示例以避免出现需要在每种数据类型中检查 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);
    };
}

【问题讨论】:

    标签: java design-patterns isinstance


    【解决方案1】:

    你可以使用泛型

    public interface Client<Data extends GenericData> {
        public boolean LoadData(Data data);
    }
    
    public class IntegerClientImpl implements Client<IntegerData> {
        @Override
        public boolean LoadData(IntegerData data){
            // ...
        }
    }
    

    【讨论】:

    • 我原以为代码结构会发生一些重大变化,但 java 让它变得更容易......呵呵
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    相关资源
    最近更新 更多