2015-05-20 3 views
1

У меня есть две функций, которые я хочу назвать их оба
первого вопроса:, если оба они истинны, некоторые операции будут делать (в этом примере добавить флаги). правильно ли их называть?объединение 2 вызовов методов в если условии

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; 
} 

второй вопрос: Что бы я, если бы я хотел negativate одной функции?

ответ

1

Было бы правильнее использовать короткое замыкание и оператор:

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 ca п имеют более двух состояний, то это изменение будет делать меньше смысла, но я предположил, что они имеют два состояния на основе формулировки вашего вопроса:

Я хочу назвать их обоих и , если оба они истинны ...

+0

Я попробовал второй, но у меня была ошибка: плохие типы операндов для двоичного оператора '&&' – AFN

+1

@afn Я сказал, что использование второго варианта требует изменения типа возврата 'getCallId()' и 'getCallState()' на boolean. – Eran

+0

Наличие метода, чья подпись является 'boolean get ', является очень противоречивой, поскольку ее не соответствует java beans. – SpaceTrucker

1

В Java & побитовое И и | является побитовым ИЛИ. Для логических операций вы должны использовать логические операторы && и ||.

+0

Но это целые числа. Поразрядные операции кажутся уместными. https://developer.android.com/reference/android/view/WindowManager.LayoutParams.html – Thilo

+1

@Thilo - если кто-то спрашивает, как вызывать методы в java, тогда побитовые операции почти наверняка более сложны, чем предполагалось! (и 'getCallId() == 1' будет конвертировать в логическое значение) – John3136

+0

И я неправильно понял вопрос. Думаю, это было больше о состоянии 'if', а затем о добавлении bitflag. Неважно. – Thilo

Смежные вопросы