反射机制-体会反射的动态性案例(尚硅谷Java学习笔记)

// 举例01
public class Reflect{

// 静态性
public Person getInstance(){
  	return new Person();
}

// 动态性
public T getInstance(String className) throws Exception{

  	Calss clzz = Class.forName(className);
  	Constructor con = class.getDeclaredConstructor();
  	con.setAccessible(true);

  	return (T)con.newInstance();
}

// 动态性
public Object invoke(String className,String methodName) throws Exception{

  	// 1.创建全类名对应的运行时类的对象
  	Calss clzz = Class.forName(className);
  	Constructor con = class.getDeclaredConstructor();
  	con.setAccessible(true);
  	Object obj = con.newInstance();

  	// 2.获取运行时类中指定的方法,并调用
    Method method = clazz.getDeclaredMethod(methodName);
  	method.setAccessible(true);
  	return method.invoke(obj);
}

}

案例:榨汁机榨水果汁,水果分别有果(com.reflect.Apple)、香蕉(Banana)、桔子(Orange)等。
效果如图。
提示:
1、声明(Fruit)水果接口,包含榨汁抽象方法: void squeeze(); /skwi:z/
2、声明榨汁机(Juicer),包含运行方法: public void run(Fruit f),方法体中,调用f的榨汁方法squeeze()
3、声明各种水果类,实现水果接口,并重写squeeze();
4、在src下,建立配置文件: config.properties,并在配置文件中配上fruitName=xXx(其中xx为某种水果的全类名)
5、在FruitTest测试类中,
(1)读取配置文件,获取水果类名,并用反射创建水果对象,
(2)创建榨汁机对象,并调用run()方法
反射机制-体会反射的动态性案例(尚硅谷Java学习笔记)_第1张图片
反射机制-体会反射的动态性案例(尚硅谷Java学习笔记)_第2张图片
反射机制-体会反射的动态性案例(尚硅谷Java学习笔记)_第3张图片

你可能感兴趣的:(layui框架学习笔记,java,学习,笔记)