在其他地方实例化的类,用于访问它

时间:2017-07-24 15:20:46

标签: java

我正在尝试使用类实例化和this

在下面的示例中,将testresult类进行实例化和存储。 this将用于将该类实例作为参数传递给另一个类。

这是this的正确用法,因为该类在其他地方被实例化了吗? 不知道为什么我看到错误为“构造函数testfail(new Handler(){})未定义”。

代码段:

public class testmain {
    private testresult tr;
    private testfunc tf;

    public testmain() {
        tr = new testresult();
        tf = new testfunc(tr);
    }
}

public class testfunc {
    private testresult storeit;

    public testfunc(testresult inst) {
        storeit = inst;
    }

    // this will be running as seperate thread  running forever.
}

public class testresult {
    private testfail tp;

    public void function() {
        tp = new testfail(this);  //----> error new Handler(){} undefined

    }
}

public class testfail {
    public testfail(testresult tr) {
        ///
    }
}

编辑:由内部类引起的错误

       public class testresult {
             private testfail tp;
                private class test {
                    public void function() {
                    tp = new testfail(this);  ----> error   
                    //  new Handler(){} undefined

                            }
                        }
                }

1 个答案:

答案 0 :(得分:0)

如上所述,您的代码将编译。由于testfail接受testresult的参数,因此使用this会起作用,即使它很尴尬而不是通常看到的内容。

除非您通过引入另一个接受testfail作为参数的构造函数来覆盖您的Handler构造函数,否则会出现此编译失败。

举个例子:

public class testfail {
    public testfail(testresult tr) {
        ///
    }

    public testfail(Handler hr) {

    }
}