2017-11-19 24 views
0
public class DowloadEngine implements Runnable { 

public DowloadEngine(CallBack c) { 
    callback = c; 
} 

public interface CallBack { 
    public void processDone(String message); 
} 

private final CallBack callback; 

@Override 
public void run() { 
    try { 
     Thread.sleep(4000); 
    } catch (InterruptedException e) {} 
    callback.processDone("'CallBack' func is called"); 
} 
} 

그리고 내 주요 클래스는 내가 콜백 방법을 통해 메인 클래스의 모든 작품을하고 싶어하지만 난이 방법을 이해하지 못했다 여기내 Java 코드에서 콜백 메소드를 어떻게 사용할 수 있습니까?

public class GUI implements DowloadEngine.CallBack{ 

public static void main(String[] args){ 

    Thread thread = new Thread(new DowloadEngine(this));// Error :Make main not static!! 
    thread.start(); 

    //wait a little to see the result 
    Scanner scan = new Scanner(System.in); 
    scan.nextLine(); 
    //wait a little to see the result 
} 

@Override 
public void processDone(String message) { 
    //code ... 
    //code ... 
    //code ... 
    System.out.println(message); 
} 
} 

에있다. 어떻게 작동합니까? 어떻게 함께 사용할 수 있습니까?

+2

(가 연관된 개체가 없기 때문에) 당신은'static' 방법 내부의'this' 참조에 액세스 할 수 없습니다 - 당신은 인스턴스를 생성해야합니다 ('새로운 GUI') 대신에 그것을 전달하십시오. – UnholySheep

답변

0

변경 :

Thread thread = new Thread(new DowloadEngine(this));

Thread thread = new Thread(new DowloadEngine(new GUI()));