Java使用反射实现根据字符串类名及参数创建对象
2024-08-31 11:13:32
要根据字符串创建对象,可以使用 Class.forName(String) 方法;
而要新建一个可以指定初始值参数的对象,就必须得使用 getConstructor(Class<T>...) 方法;
之后再对Constructor对象调用 newInstance(Object...) 方法。
然而,getConstructor 方法要接受零个或多个Class对象,且 newInstance 方法也要接受零个或多个Object参数,如果都要通过封装的方法传进来肯定不可以。
可以这样做,封装的方法传入 newInstance 方法的参数,然后根据获得各个参数的 Class 对象并传入 getConstructor 方法。
public static Object newObj(String className, Object... args) { Class[] classes = new Class[args.length]; for (int i = 0; i < classes.length; i++) { classes[i] = args[i].getClass(); } Object obj = null; try { obj = Class.forName(className).getConstructor(classes).newInstance(args); } catch (Exception e) { e.printStackTrace(); } return obj; }
如,String str = (String)newObj("java.lang.String", "hello world");
最新文章
- angular.extend()和 angular.copy()的区别
- 有关google的小问题
- 我的css笔记
- ms
- mysql分组查询取分组后各分组中的最新一条记录
- 我也来SplashScreen
- 对EditText监听,按钮点击
- mysql常见优化,更多mysql,Redis,memcached等文章
- 同步的HTTP请求
- java学习之break 和 continue
- [Javascript] Advanced Console Log Arguments
- 【HDOJ】1716 排列2
- android在eclipse中打包(签名包)方法及常见问题解决
- error: QApplication: No such file or directory
- python自动化运维:系统基础信息模块
- 【JVM命令系列】jstack
- iOS开发——iOS国际化 APP内语言切换
- Android View框架总结(一)
- ubuntu安装后问题
- mysql 多实例安装