今天中午趁休息时间玩了玩android发现这样的一段代码
package com.lidongbo;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MyActivity extends BaseActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button=(Button)findViewById(R.id.Button01);
button.setOnClickListener(backOnClickListener);
}
private Button.OnClickListener backOnClickListener=new Button.OnClickListener() {
public void onClick(View v) {
MyActivity.this.setResult(RESULT_OK, intent);
MyActivity.this.finish();
}
};
}
从以上代码中可见MyActivity.this的用法,平时一直搞J2EE也没注意过这种写法,来了兴趣,网上找了找,没找到有用的信息(和目前搜索引擎和自己描述有关),自己尝试豁然晓得了,写个例子总结下
上班时间时间紧举不出什么好的例子来
package lidongbo.test;
public class Water {
public void wash(){
}
public void run(){
System.out.println("Water run");
}
public static void byDrink (People man){
//...
}
}
package lidongbo.test;
public class People {
public void talk(){
System.out.println("talk");
}
public void run(){
System.out.println("People run");
}
public void drink(){
People.this.talk();
new Water(){
void play(){
talk();//默认得到全部的(包括Water和People的)
this.wash();//直接this.只得到Water
People.this.talk();
byDrink(People.this);//默认得到全部但是需要传递People引用,就要使用People.this
run();
this.run();
People.this.run();//如果想调用People的run方法,就要用People.this
}
}.play();
}
public static void main(String[] args) {
People man=new People();
man.drink();
}
}
在People.eat()里面如果不用People.this那么得到this指向的是匿名的Water,这样就可以区分两个不通的this,和两个实例下的同名方法了
分享到:
相关推荐
在Java语言中,this关键字可以用于四个方面:作为当前对象的引用、作为方法的参数传递、在匿名类和内部类中使用this、在构造方法中的this。 1.this作为当前对象的引用 在Java语言中,每一个类的方法成员都会隐含一...
在上面的例子中,setName 方法中的 name 是局部变量,而 this.name 就是指全局变量 name。 2. 构造方法相互调用 在 Java 中,这个关键字也可以用来实现构造方法的相互调用。例如: ```java class B { String ...
然后,我们在test方法中创建了两个实例,一个是Son的实例aa,另一个是TestClass的一个匿名类的实例bb,该匿名类的方法与Son中的方法相同。最后,我们使用这两个实例分别调用相应的cry方法。运行结果都为”this ...
Java匿名内部类是Java语言中一个独特且强大的特性,它允许我们在不需要定义一个单独的类的情况下创建类的实例。这在处理回调、事件监听、单例模式以及其他需要短时间内定义一个简单类的情况时非常有用。本篇文章将...
成员变量”来引用外部类的成员变量,如果在内部类中直接引用成员变量,会存在一个隐藏的“this.”,即如果内部类和外部类有同名成员变量,则内部类中的引用会指向内部类的成员变量。 根据给定的文件内容,我们看到...
当类中的局部变量(方法内的变量)和成员变量(类级别的变量)名称相同时,`this`可以帮助我们明确地引用成员变量。例如: ```java class Example { int count = 10; void method() { int count = 20; System...
在`setName`方法中,`this.name`表示当前对象的`name`属性,而`name`则是方法的参数。 2. **构造器的调用** `this`关键字可以用来调用同一个类中的其他构造器,这在初始化对象时非常有用。例如: ```java ...
通过使用`A.this.run()`,明确指出了要调用的是外部类`A`的方法。 ##### 4. 在构造函数中调用本类的其他构造函数 在同一个类的不同构造函数之间,可以使用`this`关键字来调用另一个构造函数。例如: ```java ...
本篇文章将深入探讨Java中的四种内部类:实例内部类、局部内部类、匿名类和静态内部类,并通过实例代码进行详细解析。 1. **实例内部类**:这是最常见的内部类形式,它在外部类的实例方法或成员位置定义。实例内部...
在这个例子中,匿名内部类的`run`方法使用了`this`关键字,它指向匿名内部类自身。如果需要访问外部类`Timer`的方法或属性,则需要使用`Timer.this`。 通过以上几个方面的详细介绍,我们可以看到`this`关键字在Java...
下面将详细阐述`this`的使用方法及其在Java中的各种应用场景。 首先,`this`关键字可以用来访问当前对象的成员变量。当成员变量和局部变量名称相同时,`this`可以帮助我们区分两者,确保正确地引用成员变量。例如:...
`this`关键字在类的方法或构造器中使用时,它总是指向调用该方法或构造器的那个对象。这意味着`this`是当前对象的引用,可以帮助我们区分局部变量和实例变量。 2. **访问实例变量** 当类中存在同名的实例变量和...
`Class.create`函数是Prototype库中用于创建类的一个方法,它的作用是简化类的定义过程,模仿传统的面向对象语言如Java或Ruby中的类创建机制。下面我们将深入探讨`Class.create`的原理和使用方式。 首先,让我们看...
5. **匿名内部类中的`this`**:在匿名内部类中,`this`可能表示内部类本身,而`OuterClass.this`则表示外部类的实例。例如: ```java public class Outer { String outerValue; public void someMethod() { new...
- **通过静态方法访问**:在静态方法中访问内部类需要先创建外部类实例,然后通过该实例创建内部类实例。 #### 静态内部类的特点 静态内部类不依赖于外部类的实例,可以通过外部类名直接访问。这意味着它们可以...
// 使用this.x来访问实例变量 } } ``` 2. **调用本类的构造器**: 在一个构造器中,可以使用`this`关键字来调用同一个类的其他构造器,实现代码复用。例如: ```java public class Demo1 { private String ...
在这个例子中,"this.name"和"this.salary"用来明确地引用类的成员变量,而不是方法内的局部变量(如果存在同名局部变量)。 2. **调用本类中的其他构造函数** 在类中,如果存在多个构造函数(重载构造函数),...
例如,当我们在`display`方法中调用`this.firstName`时,JVM会在当前对象的堆内存中查找`firstName`实例变量,并返回其值。 此外,`this`还可以在匿名内部类和lambda表达式中使用,用来引用外部类的实例变量。这...
内部类可以调用外部类的方法,如果内部类有同名方法必须使用"OuterClass.this.MethodName()"格式调用,否则将出现编译错误。 例如: ```java package innerclass; public class OuterClass { private void ...