反射和工厂模式
Java反射 反射就是把Java类中的各个成分映射成一个个的Java对象,即在运行状态中,对于任意一个类,都能够知道这个类的所以属性和方法;对于任意一个对象,都能调用它的任意一个方法和属性。 动态获取信息及动态调用对象方法的功能叫Java的反射机制。 主要由以下的类来实现反射机制(这些类都位于java.lang.reflect包中):
Class类是Reflection API中的核心类,主要方法如下:
? 工厂模式 工厂模式分为三种:
简单工厂: interface Car { public void Name(); } class Aodi implements Car { public void Name() { System.out.println("Aodi"); } } class Aotuo implements Car { public void Name() { System.out.println("Aotuo"); } } class Factory{ private Factory() {} public static Car getInstance(String className) { if("Aodi".equalsIgnoreCase(className)) { return new Aodi(); }else if("Aotuo".equalsIgnoreCase(className)) { return new Aotuo(); } return null; } } public class Test { public static void main(String[] args) throws Exception { Car car = Factory.getInstance("Aodi"); car.Name(); } } 引入反射机制,工厂模式: class Factory2 { private Factory2() {} public static Car getInstance(String className) { Car instance = null; try { instance = (Car) Class.forName(className).getDeclaredConstructor().newInstance(); } catch (Exception e) { e.printStackTrace(); } return instance; } } public class Test2 { public static void main(String[] args) throws Exception { Car car = Factory2.getInstance("sample.Aodi"); car.Name(); } } 也可以用泛型解决,抽象工厂: class Factory3 { private Factory3() {} @SuppressWarnings("unchecked") //instanceName 接口的子类 className接口的类型 public static <T> T getInstance(String instanceName,Class<T> className ) { T instance = null; try { instance = (T) Class.forName(instanceName).getDeclaredConstructor().newInstance(); } catch (Exception e) { e.printStackTrace(); } return instance; } } public class Test3 { public static void main(String[] args) throws Exception { Car car = Factory3.getInstance("sample.Aodi",Car.class); car.Name(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |