Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.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 确定语句是否在运行时满足条件_Java_Runtime_Conditional Statements - Fatal编程技术网

Java 确定语句是否在运行时满足条件

Java 确定语句是否在运行时满足条件,java,runtime,conditional-statements,Java,Runtime,Conditional Statements,我有一个函数,它接受两个参数,foo(a,字符串类型)根据类型,我必须更改if语句条件 foo(A a, String type){ //if type equals 'bar' if(!a.isEmpty() && a.hasMember()){...} //but if type is something else if(!a.isEmpty() || a.hasMember()){...} } 如果正文中的逻辑是相同的,那么几乎所有其他内容

我有一个函数,它接受两个参数,
foo(a,字符串类型)
根据类型,我必须更改
if
语句条件

foo(A a, String type){
    //if type equals 'bar'
    if(!a.isEmpty() && a.hasMember()){...}
    //but if type is something else
    if(!a.isEmpty() || a.hasMember()){...}
}

如果正文中的逻辑是相同的,那么几乎所有其他内容都是相同的,除非条件是有任何有效的方法来实现差异,或者我必须将所有内容写入两次?

我想您可以使用以下方法:

foo(A a, String type){
    //if type equals 'bar'
    if("bar".equals(type)) {
       if(!a.isEmpty() && a.hasMember()){...}
    }
    else  {
      //but if type is something else
      if(!a.isEmpty() || a.hasMember()){...}
    }
}
说明:若类型的值为“bar”,那个么若条件为true,那个么将执行该条件所需的任何代码

您也可以使用简明的形式:

if( ("bar".equals(type) && (!a.isEmpty() && a.hasMember())) || (!"bar".equals(type) && (!a.isEmpty() || a.hasMember()))) {
  // Do your stuff  
}

需要注意的一点是
“bar”。equals(type)
type.equals(“bar”)
好,因为当type为
null时,它还可以避免您遇到的麻烦。我想您可以使用以下选项:

foo(A a, String type){
    //if type equals 'bar'
    if("bar".equals(type)) {
       if(!a.isEmpty() && a.hasMember()){...}
    }
    else  {
      //but if type is something else
      if(!a.isEmpty() || a.hasMember()){...}
    }
}
说明:若类型的值为“bar”,那个么若条件为true,那个么将执行该条件所需的任何代码

您也可以使用简明的形式:

if( ("bar".equals(type) && (!a.isEmpty() && a.hasMember())) || (!"bar".equals(type) && (!a.isEmpty() || a.hasMember()))) {
  // Do your stuff  
}

需要注意的一点是
“bar”。equals(type)
type.equals(“bar”)
好,因为当type为
null时,它还可以避免麻烦,将谓词与
|
组合,并在每个条件部分检查
type

if (type.equals("bar") && !a.isEmpty() && a.hasMember()) || (!type.equals("bar") && (!a.isEmpty() || a.hasMember())) {
  //do your thing
}

如果
null
type
的一个可能值,那么可以将检查更改为
“bar”.equals(type)
,以避免出现
null点异常

将谓词与
|
组合,并在每个条件部分检查
type

if (type.equals("bar") && !a.isEmpty() && a.hasMember()) || (!type.equals("bar") && (!a.isEmpty() || a.hasMember())) {
  //do your thing
}

如果
null
type
的一个可能值,那么可以将检查更改为
“bar”.equals(type)
,以避免出现
NullPointerException

可以使用键类型的映射,并且值应该是具有类型相关逻辑的对象

foo(A a, String type) {
    typesMap.get(type).execute(a);
}


class TaskImpl implements Task { // each task should behave as it should be
    @override
    public void execute(A a) {
        if(!a.isEmpty() && a.hasMember()) {...}
    }
}

可以使用键类型的映射,并且值应该是具有类型相关逻辑的对象

foo(A a, String type) {
    typesMap.get(type).execute(a);
}


class TaskImpl implements Task { // each task should behave as it should be
    @override
    public void execute(A a) {
        if(!a.isEmpty() && a.hasMember()) {...}
    }
}

谢谢你的意见,但这正是我试图避免的,我正在寻找是否有其他方法可以做到这一点it@IliaAptsiauri:你说的其他方式是什么意思?意思是我不想重复我的if语句的主体twice@IliaAptsiauri:在这种情况下,您可以加入条件。检查我的编辑。感谢您的输入,但这正是我试图避免的,我正在寻找是否有其他方法可以做到这一点it@IliaAptsiauri:你说的其他方式是什么意思?意思是我不想重复我的if语句的主体twice@IliaAptsiauri:在这种情况下,您可以加入条件。检查我的编辑。哦,快照,这太简单了,我应该自己想想:)thanks@Tim在这种情况下,我们还需要检查
type
是否为null。将
type.equals(“bar”)
语句转过来(
“bar.equals(type)
)。如果
类型
可能为空值,这将为您提供一些不必要的NPE检查。快照非常简单,我应该自己考虑一下:)thanks@Tim在这种情况下,我们还需要检查
type
是否为null。将
type.equals(“bar”)
语句转过来(
“bar.equals(type)
)。如果
类型
可能为空值,这将为您提供一些不必要的NPE检查