2015-03-16 4 views
1

, если я хочу, чтобы это короткое, если условиеВозможности для коротких, если-условий в Java

if (x) { 
    x = false; 
} else { 
    x = true; 
} 

я использую следующий код:

x = !x; 

Но что, если я хочу короткий этот код? Есть ли способ сделать это? Если да, то как?

if (x) { 
    method_1(); 
} else { 
    method_2(); 
} 
+0

Это не будет «сокращать» что-либо по байт-коду; и даже в первом случае JVM может быть достаточно умным, чтобы в любом случае превратить первый код во второй. Ничего не получилось. – fge

+0

Я не могу представить ничего меньше, чем 'x =! X'. – elias

+0

Зависит от того, что делают ваши методы. Но что касается заданного набора кодов, вы не можете сократить его больше. –

ответ

4

Вы можете использовать? : Заявление

x ? method_1() : method_2() 

И иногда, более удобным для чтения, чтобы разделить его на несколько строк, как это:

isSomethingTrue 
    ? method_1() 
    : method_2() 

* Обработать

Чтобы быть точным, как и другие отметили, вы должны присвойте возвращаемое значение некоторой переменной. Таким образом, бит кода будет выглядеть примерно так:

someVar = isSomethingTrue 
    ? method_1() 
    : method_2() 

, что означает, что вы не можете сделать это с помощью недействительных методов.

+0

Я не думаю, что это сработает. В условных выражениях 'B' и' C' часть не должна быть недействительной. –

+0

Не совсем. Попробуйте. – amahfouz

+0

Это даже не компилируется; вам нужно иметь действительное выражение, возвращающее значение. – fge

-2
x=!x; is a good logic :) 

Вы можете использовать заявление выбора

x = x==true?false:true; 
+0

Как это лучше, чем 'x =! X'? Кроме того, что обладает высоким уровнем unreadability. –

+0

это не лучше, чем x =! X, но что делать, если вам нужно выполнить несколько выписок по проверкам? x =! x - очень простой оператор и читаемый оператор. –

+0

Затем я перейду с простым оператором 'if-else', а не свернутым кодом с условными выражениями, подобными этим. Во-первых, вы не должны делать логические сравнения - 'x == true' должны почти всегда записываться как' x'.Во-вторых, вы не можете выполнять какие-либо другие утверждения в операторах условий. Таким образом, это не решит цель, на которую вы нацеливаетесь. –

2

Мне нравится ответ amahfouz в. Просто хочу добавить к этому, что вы можете сохранить короткий, используя lambdas. Это помешало бы проверять состояние каждый раз ... делая короткий постоянный.

public class TestLambdas { 

    /** 
    * @param args the command line arguments 
    */ 
    Function<String, String> myMethod; 
    Function<String, String> myMethod_1 = (String y) -> { 
     return y; 
    }; 
    Function<String, String> myMethod_2 = (String y) -> { 
     return y.trim(); 
    }; 

    public TestLambdas(boolean x) { 
     myMethod = x 
       ? myMethod_1 
       : myMethod_2; 

    } 

} 

Итак, теперь вы можете позвонить myMethod() без того, чтобы проверить состояние.

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

  • Нет связанных вопросов^_^