要根据字符串创建对象,可以使用 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");

最新文章

  1. angular.extend()和 angular.copy()的区别
  2. 有关google的小问题
  3. 我的css笔记
  4. ms
  5. mysql分组查询取分组后各分组中的最新一条记录
  6. 我也来SplashScreen
  7. 对EditText监听,按钮点击
  8. mysql常见优化,更多mysql,Redis,memcached等文章
  9. 同步的HTTP请求
  10. java学习之break 和 continue
  11. [Javascript] Advanced Console Log Arguments
  12. 【HDOJ】1716 排列2
  13. android在eclipse中打包(签名包)方法及常见问题解决
  14. error: QApplication: No such file or directory
  15. python自动化运维:系统基础信息模块
  16. 【JVM命令系列】jstack
  17. iOS开发——iOS国际化 APP内语言切换
  18. Android View框架总结(一)
  19. ubuntu安装后问题
  20. mysql 多实例安装

热门文章

  1. web前端安全——常见的web攻击方法
  2. 浅谈Java三大特性之多态
  3. spring-boot序章:打造博客系统
  4. 动态代理之 JDK 动态代理
  5. spring boot事务管理
  6. Theia APIs——通过JSON-RPC进行通信
  7. MariaDB的备份与主从、高可用实践
  8. python中super()
  9. 字符串 hash - 不停地删掉字母
  10. Windows10内嵌Ubuntu子系统初始化设置