1. 通过类对象调用newInstance()方法,适用于无参构造方法:

例如:String.class.newInstance()

public class Solution {public static void main(String[] args) throws Exception {Solution solution = Solution.class.newInstance();Solution solution2 = solution.getClass().newInstance();Class solutionClass = Class.forName("Solution");Solution solution3 = (Solution) solutionClass.newInstance();System.out.println(solution instanceof Solution); //trueSystem.out.println(solution2 instanceof Solution); //trueSystem.out.println(solution3 instanceof Solution); //true}}

2. 通过类对象的getConstructor()getDeclaredConstructor()方法获得构造器(Constructor)对象并调用其newInstance()方法创建对象,适用于无参和有参构造方法。

例如:String.class.getConstructor(String.class).newInstance("Hello");

public class Solution {//新建一个类private String str;private int num;public Solution() {}public Solution(String str, int num) {this.str = str;this.num = num;}public Solution(String str) {this.str = str;}public static void main(String[] args) throws Exception {//测试上面的新建类Class[] classes = new Class[] { String.class, int.class };Solution solution = Solution.class.getConstructor(classes).newInstance("hello1", 10);System.out.println(solution.str); // hello1Solution solution2 = solution.getClass().getDeclaredConstructor(String.class).newInstance("hello2");System.out.println(solution2.str); // hello2Solution solution3 = (Solution) Class.forName("Solution").getConstructor().newInstance(); // 无参也可用getConstructor()System.out.println(solution3 instanceof Solution); // true}}

********* getConstructor()和getDeclaredConstructor()区别:*********

getDeclaredConstructor(Class<?>... parameterTypes) 
这个方法会返回制定参数类型的所有构造器,包括public的和非public的,当然也包括private的。
getDeclaredConstructors()的返回结果就没有参数类型的过滤了。

再来看getConstructor(Class<?>... parameterTypes)
这个方法返回的是上面那个方法返回结果的子集,只返回制定参数类型访问权限是public的构造器。
getConstructors()的返回结果同样也没有参数类型的过滤。

通过反射来创建对象?getConstructor()和getDeclaredConstructor()区别?相关推荐

  1. 【反射机制】Java中的反射机制,使用反射机制创建对象、访问属性、方法、构造方法等

    这篇文章主要是整理了Java中的反射机制,包括:反射机制概念.反射机制访问构造方法.反射机制访问普通方法.反射机制访问属性,反射机制访问修饰符. 目录 一.反射机制概念 二.反射机制使用 (1)加载C ...

  2. Java 中使用反射来创建对象、调用方法

    Java 中使用反射来创建对象.调用方法 反射创建对象 反射调用方法 反射调用私有方法 反射调用可变参私有方法 反射调用的方法自身可以抛出异常的情形   假设已有下面的类: import java.l ...

  3. C# 利用反射动态创建对象[摘录]

    摘自:http://hi.baidu.com/yangyuhang/blog/item/f12ea90e13f214e336d12250.html 在VS.Net中,有很多种方法动态调用对象的构造函数 ...

  4. Java反射之创建对象的四种方式

    Java反射之创建对象的四种方式 1.使用new关键字 2.使用Java反射机制,反射构造器 3.使用克隆方式创建对象Cloneable 4.使用序列化Serializable 1.使用Java反射机 ...

  5. 反射动态创建对象_Json为例

    1. 取得数据类型Type 方式一:Type.GetType("类型全名"); 适合于类型的名称已知 方式二:obj.GetType(); 适合于类型名未知,类型未知,存在已有对象 ...

  6. protobuf在java应用中通过反射动态创建对象

    2019独角兽企业重金招聘Python工程师标准>>> ---恢复内容开始--- 最近编写一个游戏用到protobuf数据格式进行前后台传输,苦于protobuf接受客户端的数据时是 ...

  7. protobuf java 自动反射_protobuf在java应用中通过反射动态创建对象

    最近编写一个游戏用到protobuf数据格式进行前后台传输,苦于protobuf接受客户端的数据时是需要数据类型的如xxx.parseForm(-),这样就要求服务器在接受客户端请求时必须知道客户端传 ...

  8. C#中反射和动态关键字有什么区别?

    目录 介绍 什么是反射以及我们为什么需要它? 我们如何实现反射? 第1步 第2步 反射的实际用途是什么? Dynamic关键字的用途是什么? Dynamic关键字的实际用途是什么? 反射和Dynami ...

  9. java 反射getmethod_Java 反射机制中 getMethod()和getDeclaredField()区别

    今天在程序中用到java反射机制时,遇到的问题记录一下:我当时遇到的问题是,我用反射getMethod()调用类方法时,发生 NoSuchMethodException异常,后来上网发现getMeth ...

最新文章

  1. wampsever的mysql密码_WampServer修改Mysql密码的步骤
  2. 图像亮度、对比度调节(伽马校正)
  3. 构造matlab决策树分类器,Matlab建立逻辑回归,决策树,SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线...
  4. matlab中线性规划优化计算方法和实例
  5. Android中使用AlertDialog实现几种不同的对话框
  6. 载:看了你能懂几个?
  7. php mdecrypt generic,mdecrypt_generic
  8. 看C++文档的小知识
  9. 支持IE,Firefox的日历控件
  10. Windows10安装Matlab 2018b教程
  11. 面经个人向(算法岗)
  12. js书写原生ajax,JS 原生ajax写法
  13. svn —— 版本回退
  14. 「GoTeam 招聘时间」深信服科技 Go 开发工程师(成都)
  15. 如何提升数据思维能力?
  16. html字体颜色 html中设置字体颜色代码 字体颜色获取
  17. 基于SSM中小型企业手机配件销售管理系统
  18. [跬步]说说如何自主学习
  19. Google 发布2018年Android平台新政策,终于强硬了一回!
  20. 小米3升级android 6.0,手机如何升级MIUI 6.0系统?miui升级图文教程

热门文章

  1. fileoutputstream 转 byte数组_Java:如何实现文件与数组的相互转换?
  2. VMware卸载虚拟机
  3. pycharm安装numpy
  4. python把矩阵存为文件_python 读取文件并把矩阵转成numpy的两种方法
  5. 判断是不是一个数组?
  6. mysql5.6创建用户并授予指定数据库或表权限
  7. appendChild append insertBefore prepend
  8. 一个 MVC 框架以 MVVM 之「魂」复活了!
  9. 升级IOS8游戏上传自定义头像功能失效的问题
  10. MySQL 行子查询