2013-09-29 2 views
0

나는 true을 반환 할 때까지 실행되는 boolean 메서드를 가지고 있습니다. 그리고 나는 그것을 끝낼 수있는 그 방법을 실행하는 다른 방법을 가지고 있습니다. 그게 가능하니? 나는 여기 또는 인터넷상의 어떤 것도 발견하지 못했다. 다음은 내가 의미하는 예입니다.다른 메소드의 부울 메소드 종료?

public boolean run(...) { 
end(); 
} 

public void end() { 
// do stuff 
return; 
} 

나는 이것을 잠시 동안 사용하려고 노력했지만 지금은 할 수 없습니다. 난 다른 한 끝 부울 방법을 사용하여 시도 :

public boolean end() { 
// do stuff 
return true; 
} 

나는 또 다른 수익을 추가 할 수 없습니다, 그렇지 않으면 혼란 얻을 것이다. end() 메소드 만 중지합니다.

이렇게 할 수 있습니까? 이유는 내가 원하는 모든 것을 다 할 수있는 메서드를 포함하는 간단한 if 문을 갖고 싶기 때문입니다. 이 문제를 해결하는 다른 방법이 있을까요?

+1

아니요, 아직 잃어 버렸습니다. 'return'하면 마지막 실행 지점으로 돌아갑니다 (즉,'end()'가 돌아 오면'run' 메소드의 끝으로 돌아갑니다). 너 무슨 문제 야? 좀 더 구체적인 예가 있습니까? – Makoto

+0

@Makoto 기본적으로 'end()'메소드에서 특정 일이 발생하면 원하는 것입니다. 'end()'메서드와'run()'메서드 모두에서 코드가 실행되는 것을 멈추게 할 것입니다. –

+0

오류 시나리오 인 경우 예외를 throw하십시오. 그렇지 않으면'end'에서'boolean'을 리턴하고'run'의 값을 검사하여'run'이 멈추는지를 확인해야합니다. 그러나 정상적인 행동을위한 예외 솔루션을 사용하지 마십시오. –

답변

0

귀하의 질문이 완전히 명확하지는 않지만 귀하가 아닌 지역 이탈을 원한다고 생각합니다. 이 경우 Java에서이 작업을 수행하는 유일한 방법은 Throwables를 사용하는 것입니다. 이를 수행하는 한 가지 방법은 다음과 같을 수 있습니다.

class Exit extends RuntimeException {} 

public void run() { 
    try { 
     /* Do your stuff, which may or may not entail calling end(). */ 
    } catch(Exit e) { 
     return; 
    } 
} 

public void end() { 
    throw(new Exit()); 
} 
+0

형식이 잘못된 질문을 드려 죄송합니다.하지만 기본적으로 가능한 적은 코드를 사용하고 싶었습니다. 내가 지금 가지고있는 것은'args()'메소드에서 return 문을 가지고 있지만'run())'메소드를 호출합니다. –

+0

물론 그렇지 않습니다. 'return'은 그것이 발생하는 메소드 만 빠져 나간다. 그래서 당신은 대신에 "non-local"exit를 사용할 필요가있다. – Dolda2000

+0

아, 알겠습니다. 글쎄, 표준''if' 문을'throw exception'으로 감속시키는 대신에 그냥 만들 것이라고 생각합니다. –

관련 문제