我创建一个界面如下:
// The OnClickListener interface :
public interface OnClickListener{
void onClick();
}
并且我创建一个Person类:
// Class Person :
public class Person
{
String name;
OnClickListener onClicklisner;
Person(String name)
{
this.name = name;
this.onClickListener = new OnClickListener()
{
@Override
public void onClick() {
//I want to access to this.name attribute, but it doesn't work :
System.out.println(this.name);
}
};
}
}
在上面的onClick()方法中,我想访问this.name属性,但是它不起作用。
我如何访问它?
非常感谢。
//I want to access to this.name attribute, but it doesn't work :
System.out.println(this.name);
此处this
指的是没有OnClickListener
的name
对象>
如下使用name
代替this.name
,
this.onClicklisner = new OnClickListener()
{
@Override
public void onClick() {
//I want to access to this.name attribute, but it doesn't work :
System.out.println(name);
}
};
您应该在其前面加上类名Person.this.name
pbaris使用Person.this.name
的方法有效,但是您也可以使用getter并使用getName()
,或者,如果您声明字段name
为final,则可以直接使用name
而没有前缀。
您已经陷入Java的通用范围陷阱,并且这种方法违反了接口的目的。在以下代码行上,您实例化了一个匿名类: