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
。