使用Junit单元测试 局部内部类封装在外部类的一个方法中,此方法一般会有一个返回值,返回该局部类类型

package com.yzy.innerclass;

import org.junit.Test;

/**
 * @className LocalInnerClass.java
 * @author yangsir
 * @version V1.0
 * @date 2019年8月9日-上午12:03:03
 * @description 如何调用局部内部类
 */
public class LocalInnerClass {
	@Test
	public void test1() {

		// 1常规
		Work w = new Student();// 父类引用指向子类对象
		w.doWork();// 调用子类重写的接口中的方法
		// 匿名类的对象
		Work w1 = new Work() {
			@Override
			public void doWork() {
				System.out.println("工作");
			}
		};
		w1.doWork();// 调用匿名类的方法
		System.out.println("===================================================");
	}

	@Test
	public void test2() {

		// 2匿名类的匿名对象
		new Work() {
			@Override
			public void doWork() {
				System.out.println("工作");

			}
		}.doWork();// 直接用new().work的形式,要重写doWork方法
		System.out.println("===================================================");
	}

	@Test
	public void test3() {

		// 1.调用局部内部类
//		Work work = new LocalInnerClass().getWork();  //new Teacher();  //创建一个局部内部类对象
//		work.doWork();//调用getWork方法输出讲课(已注释)
		// 2.调用
		Work work = new LocalInnerClass().getWork();// 创建一个局部内部类对象
		work.doWork();// 调用
	}

	// 局部内部类
	public Work getWork() {
		// 1局部内部类
//		class Teacher implements Work{//局部内部类实现接口,重写doWork方法,返回值为Teacher
//			@Override
//			public void doWork() {
//				System.out.println("讲课");
//			}
//		} 
//		return new Teacher();//返回一个Teacher对象
		// 2局部内部类 匿名类的匿名对象
		return new Work() {// 直接return一个匿名对象,然后重写里面的方法即可,注意这里的括号
			@Override
			public void doWork() {
				System.out.println("员工在工作");

			}
		};
	}
}

interface Work { // 一个接口
	void doWork();
}

class Student implements Work {// 实现接口的类,有自己的方法

	@Override
	public void doWork() {
		System.out.println("学习");
	}

}

下面放一位小姐姐的总结图

java调用局部内部类中的方法_ide