反射
来源:互联网 发布:海西商品交易所软件 编辑:程序博客网 时间:2024/05/16 16:14
反射反射,程序员的快乐。
即用反射可以实现运行时调用相应实例,java的反射很简单,来看直接调用class实现反射的代码:
public class User { private int _id; private String name; public void setID(int id) { _id = id; } public int getID() { return _id; } public void setName(String name) { this.name = name; } public String getName() { return name; }}
public interface IUser { void insert(User user); User getUser(int id);}
public class AccessUser implements IUser { @Override public void insert(User user) { System.out.println("在Access Server中给User添加一条记录"); } @Override public User getUser(int id) { System.out.println("在Access Server中根据ID获取User表一条记录"); return null; }}
public class SqlServerUser implements IUser { @Override public void insert(User user) { System.out.println("在SQL Server中给User添加一条记录"); } @Override public User getUser(int id) { System.out.println("在SQL Server中根据ID获取User表一条记录"); return null; }}
public class DataAccess { private static final String packageName = "reflection"; private static final String db = "SqlServer"; public static IUser CreateUser() { String className = packageName + "." + db + "User"; try { Class user = Class.forName(className); return (IUser) user.newInstance(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } return null; }}
直接用Class.forName(className)得到className对应的类,然后newInstance()实例化;
className是变量,可以通过配置文件读取,最常用的配置方式是xml。
利用xml配置文件实现反射的方法下次再来完善。
还有一些获取类中属性变量、构造函数和函数的方法以后用到反射的时候用一下就能熟悉了,没什么神秘的地方。
既然有了反射感觉抽象工厂模式,即对不同类型的工厂进行抽象的方式已经没有用了?
0 0
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 理解函数指针
- 使用 Apache Jmeter 进行 NTLM 和 Kerberos 认证
- LeetCode 386. Lexicographical Numbers
- 矩形运算
- GDOI2017模拟2.14
- 反射
- COM---注册表
- 数据库静默模式(quiesce)实验
- laravel如何输出最后一条执行的SQL
- C++中虚析构函数的作用
- C语言strcpy()函数:复制字符串
- Core Data入门
- 我的“第一个”春节
- [Android] 即时通信 Openfire + Smack 4.19 +百度定位