2013-05-29 133 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()); 
    } 

错误即时得到非静态字段不能被引用到静态语境 我不知道我应该做的,我知道一点Java,但我完全失去了Java的非静态字段

+0

你刚刚永久泄露一个线程。 – SLaks

+2

这个问题通常涉及面向对象编程的一个基本的基本方面(不仅仅是Java)。在我看来,你应该看看在线Java教程或者任何优秀的Java站点来解答这个问题。你的第一本能本不应该是把这个问题发布到SO上。 – scottb

+0

你应该使用'this',而不是'new UDP()'作为'Executors.newSingleThreadExecutor()。execute()'的参数。 – EJP

回答

6

使用类名称作为前缀表示您正在尝试使用静态上下文。

要分配一个值实例变量,不与类名前缀它与this它的前缀:

this.host = host; 
... 

此外,使用this仅仅是必要的,因为你命名你的参数一样你的实例变量。

+0

非常感谢您的快速回复 –