Java 访问匿名类的变量
有没有办法访问匿名类中定义的变量 例如: 我发现我可以定义实例变量并在匿名类->中使用它们,但我不想这样做Java 访问匿名类的变量,java,java-threads,anonymous-class,Java,Java Threads,Anonymous Class,有没有办法访问匿名类中定义的变量 例如: 我发现我可以定义实例变量并在匿名类->中使用它们,但我不想这样做 class someClass{ ANrequest request; ANresponse response; returntype someMethod(){ Thread t = new Thread(new Runnable() { @Override public void run() {
class someClass{
ANrequest request;
ANresponse response;
returntype someMethod(){
Thread t = new Thread(new Runnable() {
@Override
public void run() {
request = somerequest.build();
response = request.executeForObjectList(Myclass.class);
}
});
t.start();
t.join();
if (this)
return response.isSucces();
else
return request.something();
}
}
或者我们可以在方法内部制作最后一个元素数组,然后使用它的字段来传递结果,我认为这是一种不好的做法
class someClass{
ANrequest request;
ANresponse response;
returntype someMethod(){
Thread t = new Thread(new Runnable() {
final ANrequest request[]=new Anrequest[1];
final ANresponse response[]=new Anresponse[1];
@Override
public void run() {
request[0] = somerequest.build();
response[1] = request.executeForObjectList(Myclass.class);
}
});
t.start();
t.join();
if (this)
return response[0].isSucces();
else
return request[1].something();
}
}
所以我的问题是:在匿名类中是否有定义变量然后稍后访问它们的方法:
大概是这样的:
Runnable r= new Runnable () {
ANrequest request;
ANresponse response;
@Override
public void run() {
request = somerequest.build();
response = request.executeForObjectList(Myclass.class);
}
};
后来:
r.response
或r.request
为什么不让它成为一个带有getter方法的命名类?在类someClass
中,我有多个方法,每个方法中我必须编写不同的run()
method,即使用特定的run方法启动一个新线程,那么它们可能是命名类的匿名子类?您可以有一个同步的“容器”-类来存储内容并共享引用。@akuzminykh我想我已经找到了解决方案:我定义了abstract
类,它扩展了Thread
,并在我声明的run()类中保存了必要的字段
作为抽象方法,然后我创建了一个匿名类
,它扩展了抽象类
,然后我简单地重写run方法并使用字段
Runnable r= new Runnable () {
ANrequest request;
ANresponse response;
@Override
public void run() {
request = somerequest.build();
response = request.executeForObjectList(Myclass.class);
}
};