Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.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 - Fatal编程技术网

Java访问调用者变量,可能吗?怎样?

Java访问调用者变量,可能吗?怎样?,java,Java,我有一节课 main { Class1 class1=new Class1(); class1.function1(); } class Class1 { int abc=1; ArrayList<Class2> class2s=new ArrayList<Class2>(); int function1() { class2

我有一节课

    main {  
      Class1 class1=new Class1();  
      class1.function1(); 
    }


     class Class1 {   
        int abc=1;   
        ArrayList<Class2> class2s=new ArrayList<Class2>(); 

        int function1() {
          class2s.add(new Class2(asd));
          abc=555;   
        }    
     }

     class Class2 {   
        int functionx() {
          Log.e("abc?", ""+PARENT???.abc);   
        } 
     }
main{
Class1=新的Class1();
类别1.功能1();
}
类别1{
int abc=1;
ArrayList class2s=新的ArrayList();
int function1(){
类别2.新增(新类别2(asd));
abc=555;
}    
}
类别2{
int functionx(){
Log.e(“abc?”,“+父级???.abc”);
} 
}

如何获取调用方类的变量,比如abc?

通过将
Class2
设置为
Class1
的内部非静态类:

class Class1 {   
    int abc=1;   
    ArrayList<Class2> class2s=new ArrayList<Class2>(); 

    int function1() {
      class2s.add(new Class2());
      abc=555;   
    }    

    class Class2 {   
        int functionx() {
            Log.e("abc?", abc);   
        } 
    }
}
Class1{
int abc=1;
ArrayList class2s=新的ArrayList();
int function1(){
添加(新的Class2());
abc=555;
}    
类别2{
int functionx(){
Log.e(“abc?”,abc);
} 
}
}
Class2将有一个对Class1实例的隐藏引用


注意您的示例还有另一个错误,即类2没有构造函数。我将
Class2(asd)
(其中
asd
也未定义)更改为
newclass2()

,方法是将
Class2
设置为
Class1
的内部非静态类:

class Class1 {   
    int abc=1;   
    ArrayList<Class2> class2s=new ArrayList<Class2>(); 

    int function1() {
      class2s.add(new Class2());
      abc=555;   
    }    

    class Class2 {   
        int functionx() {
            Log.e("abc?", abc);   
        } 
    }
}
Class1{
int abc=1;
ArrayList class2s=新的ArrayList();
int function1(){
添加(新的Class2());
abc=555;
}    
类别2{
int functionx(){
Log.e(“abc?”,abc);
} 
}
}
Class2将有一个对Class1实例的隐藏引用


注意您的示例还有另一个错误,即类2没有构造函数。我已将
newclass2(asd)
(其中
asd
也未定义)更改为
newclass2()

您可以将调用方作为参数传递,如下所示:

int functionx(Class1 caller) {
  Log.e("abc?", ""+caller.abc)
}
并称之为

Class2 cls = new Class2()
cls.functionx(this)

只要abc对Class2可见。否则,在Java中没有直接的方法来了解调用者。变量class2s实现了Class1和Class2之间的单向关系。因此,您只能从Class1导航到Class2,而不能从另一个方向导航。

您可以将调用者作为参数传递,如下所示:

int functionx(Class1 caller) {
  Log.e("abc?", ""+caller.abc)
}
并称之为

Class2 cls = new Class2()
cls.functionx(this)

只要abc对Class2可见。否则,在Java中没有直接的方法来了解调用者。变量class2s实现了Class1和Class2之间的单向关系。因此,您只能从Class1导航到Class2,而不能从另一个方向导航。

应该是
Class1调用者
而不是
Object调用者
,否?正确,我选择Object作为一般示例。在这个特定的示例中(所有语法都正确),它应该是Class1。应该是
Class1调用者
而不是
Object调用者
,否?正确,我选择Object作为一般示例。在这个特定的示例中(所有语法都正确,等等),它应该是Class1。