对象和获取父母的方法

时间:2016-04-13 12:19:38

标签: java

这是我总结我的最佳方式:

Class1 makes new Thread(new Class2)

有没有办法从内部对象2代码我可以访问对象1的非静态公共方法?

不确定我是否已经解释得足够自己,但我可以回答任何有助于更好地描述它的问题

编辑:详细说明Class1是一个多线程服务器,Class2是WorkerClass,我想访问Class1.stop()以从workerClass中停止服务器

1 个答案:

答案 0 :(得分:1)

至少有3种方法可以做到这一点:

(1)使用匿名内部类:

public class Class1 {

    public void foo() {}

    public void bar() {
        Thread t = new Thread(new Runnable() {
            @Override
            public void run() {
                foo();
            }
        });
    }
}

(2)使用命名的内部类:

public class Class1 {

    public void foo() {}

    public void bar() {
        Thread t = new Thread(new MyRunnable());
    }

    private class MyRunnable implements Runnable {
        @Override
        public void run() {
            foo();
        }
    }
}

(3)将this传递给另一个顶级类的构造函数:

public class Class1 {

    public void foo() {}

    public void bar() {
        Thread t = new Thread(new MyRunnable(this));
    }
}

class MyRunnable implements Runnable {

    private Class1 class1;

    public MyRunnable(Class1 class1) {
        this.class1 = class1;
    }

    @Override
    public void run() {
        class1.foo();
    }
}