Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重构包含小差分的双if方法的有效方法_Java_Refactoring - Fatal编程技术网

Java 重构包含小差分的双if方法的有效方法

Java 重构包含小差分的双if方法的有效方法,java,refactoring,Java,Refactoring,我试图重构以下方法,但没有找到好的解决方案: private void check(SpecificData specificdata, Task task){ if(specificdata instanceof MyData){ MyData data = (MyData) specificdata; if(!data.getItemList()isEmpty){ //SAME CODE } }

我试图重构以下方法,但没有找到好的解决方案:

private void check(SpecificData specificdata, Task task){
    if(specificdata instanceof MyData){
        MyData data = (MyData) specificdata;
        if(!data.getItemList()isEmpty){
            //SAME CODE
        }
    }
    if(specificdata instanceof OtherData){
        OtherData data = (OtherData) specificdata;
        //SAME CODE
    }
}

我试图避免写同样的代码,但我不知道这是否可能。你有什么建议吗?

我会使用多态方法,生成特定数据的子类或直接使用所需的功能修改它。 例如:

/*SpecificData本身,或扩展SpecificData的类*/ 公共类SomeData扩展了SpecificData{ //包含“相同代码”块中所需的功能 } /*扩展某些数据的特殊类*/ 公共类MyData扩展了SomeData{} 公共类OtherData扩展了SomeData{} /*…在别的地方*/ 私有void checkSomeData somedata,任务任务{ MyData的ifsomedata实例//MyData的一个特例 ifMyData somedata.getItemList.isEmpty返回; //在此处运行“相同代码”块 }
大家好,为什么不使用公共代码创建一个新函数并从两个位置调用该函数呢?在多个位置运行相同的代码称为方法,这样做有问题吗?了解//相同的代码实际上是什么会很有帮助。