这是我总结我的最佳方式:
Class1 makes new Thread(new Class2)
有没有办法从内部对象2代码我可以访问对象1的非静态公共方法?
不确定我是否已经解释得足够自己,但我可以回答任何有助于更好地描述它的问题
编辑:详细说明Class1是一个多线程服务器,Class2是WorkerClass,我想访问Class1.stop()以从workerClass中停止服务器
答案 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();
}
}