Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 访问匿名类的变量_Java_Java Threads_Anonymous Class - Fatal编程技术网

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);
           }
       };