2013-05-29 4 views
0
public class UDP implements Runnable { 

    private String host; 
    private int port; 
    private int delay; 
    private int timeout; 

    @Override 
    public void handlePacket(String host, int port, int delay, int timeout) { 
     UDP.host = host; 
     UDP.port = port; 
     UDP.delay = delay; 
     UDP.timeout = timeout; 
     Executors.newSingleThreadExecutor().execute(new UDP()); 
    } 

점점 오류 메신저 정적 필드가 나는, 내가 조금 자바 내가 무엇을해야하는지 아무 생각을 알 수 없었다 정적 컨텍스트 에 참조 할 수 없습니다하지만 난 완전히 사용자바 비 정적 필드

+0

스레드를 방금 영구적으로 유출했습니다. – SLaks

+2

이 질문은 객체 지향 프로그래밍의 기본적이고 기본적인 측면 (Java뿐 아니라)에 관한 것입니다. 저의 견해로는이 질문에 대한 답변을 얻기 위해 온라인 Java 튜토리얼 또는 우수한 Java 사이트를 살펴보아야합니다. 귀하의 첫 번째 본능은이 질문을 게시하지 않아야합니다. – scottb

+0

'Executors.newSingleThreadExecutor(). execute()'의 인자로'new UDP()'가 아닌'this'를 사용해야합니다. – EJP

답변

6

을 상실하고 비입니다 접두사로 class name은 정적 컨텍스트를 사용하려고한다는 것을 나타냅니다. 당신이 당신의 매개 변수 이름 때문에 this은 같은 필요하여, 또한

this.host = host; 
... 

을 :

this으로 접두사, 클래스 이름으로 접두사하지 않는 인스턴스 변수에 값을 지정하려면 인스턴스 변수.

+0

빠른 응답을 보내 주셔서 감사합니다. –