Java Activity.this在上下文中引用
我有一个Java Activity.this在上下文中引用,java,inner-classes,Java,Inner Classes,我有一个活动和一个列表视图,我添加了一个侦听器(setOnItemClickListener)。 当我从上述侦听器进入此方法时: public void onItemClick(AdapterView<?> parent, View view, int pos, long id ) 通过host变量,我可以访问所有MyActivity方法和属性(它们不是静态的),但我无法访问MyActivity。此引用 有人能解释一下为什么吗?谢谢MyActivity。当代码在内部类中运行
活动
和一个列表视图
,我添加了一个侦听器(setOnItemClickListener
)。
当我从上述侦听器进入此方法时:
public void onItemClick(AdapterView<?> parent, View view, int pos, long id )
通过host
变量,我可以访问所有MyActivity
方法和属性(它们不是静态的),但我无法访问MyActivity。此
引用
有人能解释一下为什么吗?谢谢
MyActivity。当代码在内部类中运行时,此
将引用“外部”MyActivity类的实例。-是吗?如果是这样,为什么需要host
变量
更新:我刚刚才意识到,您可能忽略了一个事实,即您将通过MyActivity访问的所有内容。在内部类中,您可以通过特定设置中的host
访问这些内容
更新:您似乎对此
的含义有错误的理解。最初,它代表这个对象,即运行代码的类
通过附加符号类,Java允许您访问代码外部类的实例,但只能从内部类访问
在下面的示例中,类。此
工作:
class A {
int a;
class B {
void process_a_in_A() {
A.this.a++;
}
}
// however, this does NOT work b/c
// static inner classes do not have references t oouter classes
static class C {
void process_a_in_A() {
// error -- class A.C is detached from its outer class A
A.this.a++;
}
}
}
另外,在下面的示例中,类。此
不起作用。原因很简单,系统无法知道是否存在类A的实例,以及您希望引用的类A的可能多个实例中的哪一个
class A {
int a;
}
class B {
void process_a_in_A() {
// A here is a class name, not an object reference;
// so A.this is meaningless in this context
A.this.a++;
}
}
再一次,请注意,您提出的问题没有提供必要的信息来具体回答,因此只能笼统地回答,而且您似乎对内部类和类有错误的理解。这是表示法。MyActivity。这将引用当代码在内部类中运行时,“外部”MyActivity类。--是吗?如果是,为什么需要host
变量
更新:我刚刚才意识到,您可能忽略了一个事实,即您将通过MyActivity访问的所有内容。在内部类中,您可以通过特定设置中的host
访问这些内容
更新:您似乎对this
的含义有错误的理解。最初,它代表此对象,即运行代码的类
通过附加符号类,Java允许您访问代码外部类的实例,但只能从内部类访问
在下面的示例中,类。此
工作:
class A {
int a;
class B {
void process_a_in_A() {
A.this.a++;
}
}
// however, this does NOT work b/c
// static inner classes do not have references t oouter classes
static class C {
void process_a_in_A() {
// error -- class A.C is detached from its outer class A
A.this.a++;
}
}
}
另外,在下面的示例中,Class。此
不起作用。原因很简单,系统无法知道是否存在类A的实例,以及您要引用的可能多个类A实例中的哪一个
class A {
int a;
}
class B {
void process_a_in_A() {
// A here is a class name, not an object reference;
// so A.this is meaningless in this context
A.this.a++;
}
}
请再次注意,您提出的问题没有提供必要的信息来具体回答,因此只能笼统地回答,而且您似乎对内部类和类有错误的理解。这是表示法。确切地说,在任何类中,您都可以通过其名称来引用自身e->Name.this(特别用于内部类)
既然您已经在变量主机中引用了对象,那么为什么不直接使用它呢?确切地说,在任何类中,您都可以通过其名称->名称来引用自身。这(尤其用于内部类)
既然您已经在变量主机中引用了您的对象,那么为什么不直接使用它呢?!当然,在我的代码中,我是通过主机访问的。我的问题是因为我不明白为什么我不能通过MyActivity访问MyActivity
属性。这
。此外,当我键入eclipse“主机”时“,它向我展示了很多可能性,但这不包括在内。谢谢你说的是对的。但是你还没有理解我的问题(当然我没有解释清楚)。我有主人object@user1205781还有一个问题,为什么Eclipse不显示主机?如果这是你的问题,那么答案是:host
和host。这将是相同的。你需要它做什么?这将导致无休止的选择嵌套,因为这样,host.this.this
也必须显示?;)--如果这不是你的问题,你能重新措辞吗?是的,你是对的。我认为这是可以从一个对象访问的(我知道这是一件愚蠢的事情,但我认为这是合法的,所以我很好奇),而这是不合法的。无论如何,谢谢你的时间!当然,在我的代码中,我是通过主机访问的。我的问题是因为我不明白为什么我不能通过MyActivity访问MyActivity
属性。此外,当我输入eclipse“host”时,它向我展示了很多可能性,但这并不包括在内。谢谢你说的是对的。但是你还没有理解我的问题(当然我没有解释清楚)。我有主人object@user1205781还有一个问题,为什么Eclipse不显示主机?如果这是你的问题,那么答案是:host
和host。这将是相同的。你需要它做什么?这将导致无休止的选择嵌套,因为这样,host.this.this
也必须显示?;)--如果这不是你的问题,你能重新措辞吗?是的,你是对的。我认为这是可以从一个对象访问的(我知道这是一件愚蠢的事情,但我认为这是合法的,所以我很好奇),而这是不合法的。无论如何,谢谢你的时间!谢谢你的回答。我跟你说的和上面的Stacker一样。谢谢你的回答。我跟你说的和上面的Stacker一模一样。