反射机制就是在运行状态中,对于任意一个类,一个对象都能够得到其所对应的属性和方法。这种动态获取的信息以及动态调用对象方法的功能称为java的反射机制。
反射是在运行的时候进行的,不是在编译的时候运行的。
一切的操作都将使用Object完成,如果已经有一个类,则肯定可以通过类创建对象;那么如果现在要求通过一个对象找一个类的名称,此时就需要用到反射机制了。
反射的优点:
1. 减少对象的依赖,调用方法更灵活,改变属性的值。
2. 通过class对象得到该类的对象,从而获取到方法等。
3. 提高程序的扩展性
反射机制主要提供了以下功能
a) 在运行时判断任意一个对象所属的类
b) 在运行时构造任意一个类的对象
c) 在运行时判断任意一个类所具有的成员变量和方法
d) 在运行时调用任意一个对象的方法
e) 生成动态代理
利用反射机制实现简单的工厂模式
1.创建接口
public interface fruit(){
//提供抽象方法
void aet();
}
2.创建实现类
public class Apple implements fruit{
@override//重写接口方法
public void eat(){
System.out.println("吃苹果");
}
}
public class Orange implements fruit{
@override//重写接口方法
public void eat(){
System.out.println("吃橘子");
}
}
3.创建工厂类通过反射机制实例化对象
public class ReflectFactory{
public static fruit getInstance(String ClassName){
fruit f = null;
try{
//通过反射机制实例化对象ClassName是包名+类名
f = (fruit) Class.forName(ClassName).newInstance();
}catch(Exception e){
e.printStackTrace();
}
return f;
}
}
4.测试
---------------------