类名.class 类名.this

其他博文:

类名.class 类名.this 详解

 

结论: 

  • 当在一个类的内部类中,如果需要访问外部类的方法或者成员域的时候,如果使用  this.成员域(与 内部类.this.成员域 没有分别) 调用的显然是内部类的域 , 如果我们想要访问外部类的域的时候,就要必须使用  外部类.this.成员域。
  • 传递 new 类名()  或   类名.this 效果等同。

 

类名.class 类名.this 测试:

package com.company.test;

import java.lang.reflect.Method;

public class TestA {
	public void tn() {
		System.out.println("外部类tn");
	}

	String str = "123";

	Thread thread = new Thread() {
		public void tn() {
			System.out.println("inner tn");
		}

		public void run() {
			System.out.println("内部类run");
			// 调用外部类的tn方法
			TestA.this.tn();
			// 调用内部类的tn方法
			this.tn();
			// 传递 new TestA() 或 TestA.this 效果等同
			test1(new TestA());
			test2(TestA.this);
			try {
				test3(TestA.class);
			} catch (InstantiationException e) {
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				e.printStackTrace();
			}

			// 反射测试
			try {
				Class calss = Class.forName("com.jiuqi.test.TestA");
				TestA q = (TestA) calss.newInstance();
				System.out.println(" 反射测试 ==> " + q.str);
			} catch (ClassNotFoundException e1) {
				e1.printStackTrace();
			} catch (InstantiationException e) {
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				e.printStackTrace();
			}
		}
	};

	public static void main(String aaa[]) {
		new TestA().thread.start();
	}

	protected void test3(Class<TestA> class1) throws InstantiationException, IllegalAccessException {
		TestA a = class1.newInstance();
		System.out.println("测试传参: 类.calss ==> " + a.str);
		Method[] methods = class1.getMethods();
		System.out.println("↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓");
		if (null != methods) {
			for (Method method : methods) {
				// System.out.println(method.getName());
			}
			System.out.println("测试反射");
		}
		System.out.println("↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑");
	}

	protected void test1(TestA testA) {
		System.out.println("测试传参: new TestA() ==> " + testA.str);
	}

	protected void test2(TestA testA) {
		System.out.println("测试传参: TestA.this  ==> " + testA.str);
	}
}

打印结果:

内部类run
外部类tn
inner tn
测试传参: new TestA() ==> 123
测试传参: TestA.this  ==> 123
测试传参: 类.calss ==> 123
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
测试反射
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
 反射测试 ==> 123

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值