java,类名.this

Python011

java,类名.this,第1张

有时候,我们会用到一些内部类和匿名类。当在匿名类中用this时,这个this则指的是匿名类或内部类本身。这时如果我们要使用外部类的方法和变量的话,则应该加上外部类的类名。如下面这个例子:

public

class

A

{

int

i

=

1

public

A()

{

Thread

thread

=

new

Thread()

{

public

void

run()

{

System.out.println("内部类run")

A.this.run()//调用外部类的run方法,输出

外部类run

}

this.run()//调用内部类的run方法

thread.start()

}

public

void

run()

{

System.out.println("外部类run")

}

}

在上面这个例子中,

thread是一个匿名类对象,在它的定义中,它的run函数里用到了外部类的run函数。这时由于函数同名,直接调用就不行了。这时有两种办法,一种就是把外部的

run

函数换一个名字,但这种办法对于一个开发到中途的应用来说是不可取的。那么就可以用这个例子中的办法用

外部类的类名加上this引用来说明要调用的是外部类的方法run。

是当前类的对象,但其实你写的时候并没有指代,只有创建了当前类的对象在调用该对象就是指代这个对象

简单一点你就把在那个类里用了this 这个this就是指代这个类,而跟这类里你创建的其他对象没关系,(这是非官方,这么说其实是错的,但是好理解,你看着理解就好,其实是在创建对象后this才起作用)

最后,老铁别忘了采纳

this指的是当前正在访问这段代码的对象,当在内部类中使用this指的就是内部类的对象,

为了访问外层类对象,就可以使用外层类名.this来访问,一般也只在这种情况下使用这种

示例代码,请注意第17行!代码来自《Android应用开发揭秘》

public class Activity01 extends Activity

{

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState)

/* 设置显示main.xml布局 */

setContentView(R.layout.main)

/* findViewById(R.id.button1)取得布局main.xml中的button1 */

Button button = (Button) findViewById(R.id.button1)

/* 监听button的事件信息 */

button.setOnClickListener(new Button.OnClickListener() {

public void onClick(View v)

{

/* 新建一个Intent对象 */

Intent intent = new Intent()

/* 指定intent要启动的类 */

intent.setClass(Activity01.this, Activity02.class)

/* 启动一个新的Activity */

startActivity(intent)

/* 关闭当前的Activity */

Activity01.this.finish()

}