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。