2015-01-10 2 views
0

Android 게임에서 플레이어에게 질문을하고 다른 시간 후에 다른 힌트를 제공하고 플레이어가 정시에 응답하지 않으면 답변을 제공합니다. .타이머를 사용하여 Java로 일반 작업 만들기

질문, 힌트 및 지연 시간은 JSON 형식의 외부 파일에서 읽습니다.

각 힌트에 타이머를 설정하고 싶습니다. 자바 스크립트에서 나는, 폐쇄와 함께이 같은 일반적인 방법을 생성 할 수있는 :

자바 스크립트 코드

자바에서
<body> 
<p id="1">One</p> 
<p id="2">Two</p> 
<p id="3">Three</p> 

<script> 
var hints = [ 
    { id: 1, delay: 1000, text: "Hint 1" } 
, { id: 2, delay: 2000, text: "Hint 2" } 
, { id: 3, delay: 3000, text: "Hint 3" } 
] 

hints.map(setTimeoutFor) 

function setTimeoutFor(hint) { 
    setTimeout(showHint, hint.delay) 

    function showHint() { 
    element = document.getElementById(hint.id) 
    element.innerHTML = hint.text 
    } 
} 
</script> 

을, 나는 다음과 같이 각각의 힌트에 대해 별도의 방법을 사용할 수 있다는 것을 알고 :

자바 코드

import java.util.Timer; 
import java.util.TimerTask; 

String hint1 = "foo"; 
CustomType location1 = customLocation; 
Timer timer1; 
TimerTask task1; 

void createTimer1(delay) { 
    timer1 = new Timer(); 
    task1 = new TimerTask() { 
     @Override 
     public void run() { 
      giveHint1(); 
     } 
    }; 
    timer1.schedule(task1, delay); 
} 

void giveHint1() { 
    timer1.cancel() 
    giveHint(hint1, location1); 
} 

void giveHint(String hint, CustomType location) { 
    // Code to display hint at the given location 
} 

이 우아하지 않습니다. Java에서이 generic을 만들기 위해 어떤 기술을 사용할 수 있습니까? 그래서 모든 힌트에 대해 같은 방법을 사용할 수 있습니까?

답변

1

왜 각 힌트에 대해 별도의 방법이 필요합니까? 다음과 같이 메소드 인수를 사용할 수 있습니다.

// "final" not required in Java 8 or later 
void createTimer(int delay, final String hint, final Point location) { 
    timer = new Timer(); 
    task = new TimerTask() { 
     @Override 
     public void run() { 
      giveHint(hint, location); 
     } 
    }; 
    timer.schedule(task, delay); 
} 

void giveHint(String hint, CustomType location) { 
    // Code to display hint at the given location 
}