尝试创建一个继承自Thread的类的实例,获取错误说“无法访问类型为cBitrex的封闭实例”

时间:2015-01-08 19:07:50

标签: java

我正在尝试让我的网络代码运行一个线程。我有一个继承自Thread的类。当我尝试创建它的实例时,

cSecureThread cRun=new cSecureThread(); 

我收到以下错误:“无法访问类型为cBitrex的封闭实例”

这是代码块

public class cSecureThread extends Thread { 
    String reply=null;
    String url;
    public void run()
    {
    //       GetSecureBitrexApi(url);           
    }

};


static String fn;
static String GetSecureBitrexApiThread( String url)
{

    // Line below creats error    
    cSecureThread cRun=new cSecureThread(); 
    cRun.url=url;
    System.out.println("XXXXXXXXXXXXXXXXX start thread XXXXXXXXXXXXXXXXXXXX");
    cRun.start();
    try {
        // wait 10 seconds to make api call
        cRun.join(1000*30);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    System.out.println("XXXXXXXXXXXXXXXXX end thread XXXXXXXXXXXXXXXXXXXX");
    fn= cRun.reply;
    return fn;    
}

1 个答案:

答案 0 :(得分:0)

看起来整个代码块都嵌入了一个名为" cBitrex"的类中。在另一个类中定义的非static类维护对该外部类的实例的引用。因此,它不能在该外部类的static方法中使用。请参阅here for more details

所以你的修复可能是宣布

public static class cSecureThread extends Thread {
// ...
}

也就是说,只需添加static关键字。

(注意我说"看起来像"和#34;可能"因为你没有提供大量的背景......)