내 코드를 더 읽기 쉽게 만들려고해서 짧은 IF 문을 사용하기로 결정했습니다.
다음은 작동하지 않는 코드입니다 ( "문이 아닙니다").
jXPanel6.isVisible() ? jXPanel6.setVisible(true) : jXPanel6.setVisible(false);
이것에 무슨 문제가 있습니까? 대괄호가 필요하십니까? 어디?
내 코드를 더 읽기 쉽게 만들려고해서 짧은 IF 문을 사용하기로 결정했습니다.
다음은 작동하지 않는 코드입니다 ( "문이 아닙니다").
jXPanel6.isVisible() ? jXPanel6.setVisible(true) : jXPanel6.setVisible(false);
이것에 무슨 문제가 있습니까? 대괄호가 필요하십니까? 어디?
답변:
"삼항 표현식" x ? y : z은 조건부 할당 에만 사용할 수 있습니다 . 즉, 다음과 같이 할 수 있습니다.
String mood = inProfit() ? "happy" : "sad";
삼항 표현식이 ( String이 예 에서는 유형의) 무언가를 반환하기 때문 입니다.
실제로 짧은 인라인으로 사용되는 것은 아닙니다 if-else. 특히 개별 부품이 값을 반환하지 않거나 호환되지 않는 유형의 값을 반환하는 경우 사용할 수 없습니다. (따라서 두 메서드가 동일한 값을 반환하는 경우이 작업을 수행 할 수 있지만 부작용 목적으로 만 호출 해서는 안됩니다 .)
따라서이를 수행하는 적절한 방법은 if-else 블록을 사용하는 것입니다.
if (jXPanel6.isVisible()) {
jXPanel6.setVisible(true);
}
else {
jXPanel6.setVisible(false);
}
물론 단축 할 수 있습니다
jXPanel6.setVisible(jXPanel6.isVisible());
후자의 표현은 모두 당신이하려는 일을 더 명확하게 전달한다는 점에서 더 읽기 쉽습니다. (그런데, 조건이 잘못 되었나요? 이건 토글 이라기보다는 노-옵인 것 같습니다).
낮은 문자 수 와 가독성 을 혼동 하지 마십시오 . 요점은 가장 쉽게 이해할 수있는 것입니다. 그리고 약간의 언어 기능을 오용하는 것은 독자를 혼란스럽게하거나 적어도 정신적 인 이중 작업을하게 만드는 확실한 방법입니다.
jXPanel6.setVisible(jXPanel6.isVisible());
또는 귀하의 양식 :
jXPanel6.setVisible(jXPanel6.isVisible()?true:false);
<bool condition> ? true : false<bool condition>
삼항 연산자는 할당의 오른쪽 만 될 수 있으며 자체 문이 될 수 없습니다.
다른 사람들이 지적했듯이
x ? y : z
(완전한) 진술이 아니라 표현식입니다. 할당의 오른쪽이나 함수에 대한 매개 변수 등과 같이 어딘가에서 사용해야하는 rvalue입니다.
아마도 당신은 이것을 볼 수 있습니다 : http://download.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html
나는 파티에 조금 늦었지만 미래의 독자들을 위해.
내가 알 수 있듯이 가시성 상태를 바로 전환하고 싶습니까? !연산자를 사용하지 않는 이유는 무엇 입니까?
jxPanel6.setVisible(!jxPanel6.isVisible);
if 문은 아니지만 예제와 관련된 코드에이 방법을 선호합니다.