2012-06-11 2 views
-4

3 번 실행 한 후에이 프로그램을 취소하려고 시도하지만 "로컬 변수 taskId가 초기화되지 않았을 수 있습니다."오류가 계속 발생합니다. 하나는 위험합니다. 둘은 컴파일러 오류가 발생하더라도 제대로 컴파일하고 프로그램을 실행할 수 있습니까? 마지막으로 어떻게 해결할 수 있습니까? 감사!Java에서 변수 오류 초기화를 방지하는 방법

final int taskId = plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() { 
    int count = 0; 
    @Override 
    public void run() { 
     ((LivingEntity) e.getEntity()).damage(2); 
     count++; 
     if (count > 2) { 
      Bukkit.getScheduler().cancelTask(taskId); 
     } 
    } 

}, 60L); 
+0

"컴파일러 오류 발생에도 불구하고 제대로 컴파일 할 수 있습니까?"??? – Muse

+0

'컴파일러 오류가 발생 함에도 불구하고 여전히 컴파일 할 수 있습니까? '맨, 먼저 프로그래밍에 대한 기본 지식을 습득해야합니다. B4 u와 같은 고수준의 것들을 시도하십시오 – Pranalee

+1

불행히도 "이걸 믿어주세요"- 스위치가 아직 구현되지 않았습니다. 모든 컴파일러에서 .. :) – hage

답변

2

초기화하기 전에 taskId를 사용해 볼 수 있습니다.

cancelTask(taskId)에만 액세스 할 수 있지만 익명의 클래스가 생성 된 경우 사용자의 경우에는 작동하지 않습니다. 즉 그것이 설정되기 전에.

대신 해결하려면 int[] task을 사용하는 것이 좋지만 위험합니다.

좀 더 간단한 해결 방법은 IllegalStateException과 같은 RuntimeException을 던지거나 자신의 소유물 중 하나를 반복하는 것이므로 반복되는 작업이 중지됩니다.

+0

고마워, 완벽하게 작동합니다. –