Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.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条件中组合2个方法调用_Java_Call - Fatal编程技术网

Java 在if条件中组合2个方法调用

Java 在if条件中组合2个方法调用,java,call,Java,Call,我有两个函数,我想同时调用它们 第一个问题:如果两者都为真,则执行一些操作(在本例中添加标志)。这样称呼他们对吗 if (getCallId()==1 & getCallState()==1 ) getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED

我有两个函数,我想同时调用它们
第一个问题:如果两者都为真,则执行一些操作(在本例中添加标志)。这样称呼他们对吗

    if (getCallId()==1 & getCallState()==1 )
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
            | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED

          | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON

            | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
public int getCallState()
{
    return MiniSipService.m_callState;
}
    public int getCallId()
{
    return MiniSipService.m_callId;
}

第二个问题:如果我想否定函数中的一个,我会怎么做?

在Java中
&
是按位的,而
|
是按位的或。对于逻辑操作,应使用逻辑运算符
&&
|

使用短路和运算符更为正确:

if (getCallId()==1 && getCallState()==1 )
或者更好,更改方法以返回布尔值:

public boolean getCallState()
{
    return MiniSipService.m_callState == 1;
}

public boolean getCallId()
{
    return MiniSipService.m_callId == 1;
}
并将条件更改为:

if (getCallId() && getCallState())
当然,如果
m_callId
m_callState
可以有两种以上的状态,那么这种更改就没有什么意义了,但我假设根据您问题的措辞,它们有两种状态:

我想给他们两个打电话,如果他们都是真的,


但这些都是整数。按位操作似乎是合适的@Thilo-如果有人问如何在java中调用方法,那么按位操作几乎肯定比预期的更复杂!(而且
getCallId()==1
无论如何都会转换为布尔值)我误解了这个问题。我想更多的是关于
if
条件,然后是关于稍后添加的位标志。没关系。我尝试了第二个选项,但出现了一个错误:二进制运算符“&&&”afn的操作数类型不正确。我确实说过,使用第二个选项需要更改
getCallId()
getCallState()的返回类型
到boolean。拥有一个签名为
boolean get
的方法是非常违反直觉的,因为它不符合JavaBeans惯例。@SpaceTrucker我同意。如果m_callId和m_callState实际上是布尔值(或者有两个可能的值),我将重命名这些方法。如果没有,我可能会引入新方法,例如
isValidState
isValidId