匿名类中的this
时间: 2023-10-18 22:04:14 浏览: 34
匿名类中的this指的是该匿名类的实例本身,而不是外部类的实例。在匿名类中,由于没有显式的类名,因此this关键字可以用来引用该匿名类的实例。例如:
```
public class Example {
public void doSomething() {
Runnable r = new Runnable() {
public void run() {
// 使用this关键字引用该匿名类的实例
System.out.println("My class is " + this.getClass().getName());
}
};
r.run();
}
}
```
在这个例子中,我们创建了一个匿名类实现了Runnable接口,然后在run()方法中使用了this关键字引用该匿名类的实例。当我们调用doSomething()方法时,会输出该匿名类的类名。
相关问题
匿名内部类的this
匿名内部类的this关键字指向该内部类的实例对象,在匿名内部类中使用this时,它引用的是该内部类的实例,而不是外部类的实例。这是因为匿名内部类没有自己的名称,所以无法通过类名来引用自身。
举个例子,假设有一个外部类A和一个匿名内部类B,当在B中使用this关键字时,它指向B的实例对象。如果想要引用外部类A的实例对象,可以使用外部类的名称加上.this,即A.this。
下面是一个示例代码:
```java
public class A {
private int num = 10;
public void method() {
B b = new B() {
public void printNum() {
System.out.println("num: " + num); // 访问外部类A的成员变量
System.out.println("this: " + this); // 输出B的实例对象
System.out.println("A.this: " + A.this); // 输出外部类A的实例对象
}
};
b.printNum();
}
public static void main(String[] args) {
A a = new A();
a.method();
}
}
interface B {
void printNum();
}
```
输出结果为:
```
num: 10
this: 实例对象的哈希码
A.this: 外部类A的实例对象哈希码
```
在上述示例中,匿名内部类B中的printNum方法中可以访问外部类A的成员变量num,并通过this关键字引用了B的实例对象。同时,通过A.this引用了外部类A的实例对象。
java中匿名内部类是什么
Java中的匿名内部类是一种没有类名的内部类,它可以在声明它的方法或代码块内部实现一个接口或继承一个类,并且可以扩展该类的行为。与普通的内部类不同,匿名内部类没有类名,它的实例是通过实现一个接口或者继承一个类而创建的。需要注意的是,匿名内部类只能在声明它的方法或代码块内部使用,因为它没有类名。此外,匿名内部类不能定义构造函数,因为它没有类名来作为构造函数名。以下是一个实现Runnable接口的匿名内部类的例子:
```java
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("This is a thread created by anonymous inner class.");
}
});
thread.start();
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)