2012-09-28 2 views
13

사용하려고합니까? 어떤 메소드를 호출할지 결정하지만 변수를 지정할 필요가 없습니다. 내 질문 : 변수를 할당하지 않고 삼항 연산자를 사용하는 방법이 있습니까? 대신JAVA가 삼항 연산자를 사용하여 메서드 호출

if(x == 1) { 
    doThisMethod() 
} else { 
    doThatMethod() 
} 
+0

'void' 메소드와 할당 대상을 사용하지 않으려 고 시도 했습니까? (필자는 전혀 없지만 작동하지 않는다는 것은 확실하지 않습니다.) –

+1

죄송합니다. 내 대답이 잘못되었습니다. Java에서 단일 연산자로 삼항 연산자를 사용할 수 없습니다. 당신은 C.에서 가능합니다. – pb2q

답변

15

는 삼원 연산자의 용도가 아니기 때문에이 작동하지 않을의

(something i dont need) = (x == 1)? doThisMethod():doThatMethod() 

.

당신이 정말로 그것을 1 개 라인 싶은 경우

, 당신은 쓸 수 있습니다 :

if (x==1) doThisMethod(); else doThatMethod(); 
+0

이것은 효과가있었습니다. 지식에 감사드립니다. 다른 사람들이 쉽게 따라갈 수 있도록하고 싶습니다. –

+1

-1 : 완전히 잘못되었습니다. 이것은 메서드의 반환 유형과는 아무런 관련이 없습니다. 'int' 나'Object'를 반환하는 메소드를 변경해도 구문 오류는 해결되지 않습니다. – ruakh

+0

@ruakh, 내가 물었던 질문은 기본적으로 변수를 할당 할 필요가 없도록 기본적으로 3 진수 연산자를 void로 만들 수 있습니다. 나는 이것이 가장 좋은 대답이라는 질문에 답합니다. (왜냐하면, 실제로, "else"삼항 연산자가 필요하지 않기 때문에. 아무도 나에게 -1을 얻는다면. –

5

나는이 작동하는지 의심한다.

ConditionalExpression: 
    ConditionalOrExpression 
    ConditionalOrExpression ? Expression : ConditionalExpression 

을 그리고 ConditionalExpression은 그 자체로 Statement되지 않습니다 : 다음과 같이 JLS §15.25는 삼항 표현을 정의합니다. 다양한 다른 장소에서 사용할 수 있습니다 (예 : Assignment :

AssignmentExpression: 
    ConditionalExpression 
    Assignment 

Assignment: 
    LeftHandSide AssignmentOperator AssignmentExpression 
-4

흐름이 메서드 호출 후에 중단되는 경우 이보다 훨씬 다양 화 될 수 있습니다.이 메서드는 사용할 수 있지만 흐름이 중단되지 않으면주의를 기울여야합니다. 그러면 두 메서드가 모두 실행됩니다.

+0

이것은 x가 무엇이든 관계없이 항상 doThatMethod();를 호출합니다. – hinneLinks

+0

@hinneLinks가 조금 더 장황하게 만들었습니다. 혼란 스럽습니다. –

+0

'return doThisMethod();를 말한다면, 그것을 써야합니다. 만약 당신이 doThisMethod()를 호출하여'doThatMethod();를 호출하지 못하도록 예외를 던지면, 이것은 매우 나쁜 코드 스타일이 될 것이고, 아무도 그렇게 기대하지 않을 것입니다. – hinneLinks

관련 문제