2019独角兽企业重金招聘Python工程师标准>>>

一、通过反射实例化无参对象

/**** * @Title: createNewObject * @Description: 反射实例化无参对象 * @param * @throws* Exception * @return void * @throws*/public static void createNewObject() throws Exception {// 早期:// new 的时候,先根据被new的类的名称寻找该类的字节码文件,加载至内存,// 并创建该字节码文件对象,然后创建该字节码文件对应的Person对象。// com.lh.reflection.bean.Person p = new// com.lh.reflection.bean.Person();// 现在:String name = "com.lh.reflection.bean.Person";// 寻找该类名称字节码文件 ,并加载至内存,生成Class对象Class<Person> clazz = (Class<Person>) Class.forName(name);// 如何产生该类的对象呢?// 相当于调用Person类中的无参构造方法Person person = clazz.newInstance();}

二、通过反射实例化有参对象

/*** @throws Exception * * @Title: createNewObject2 * @Description:* 反射实例化有参对象 * @param * @return void * @throws*/private static void createNewObject2() throws Exception {
//      com.lh.reflection.bean.Person p = new com.lh.reflection.bean.Person("小明", 20);/**** 当获取指定名称对应类中所体现的对象时,而该对象初始化不使用空参构造函数怎么办呢?* 既然是通过指定的构造函数进行对象的初始化,所以应该先获取该构造函数,通过字节码文件对象即可完成。* 该方法是getConstructor(Class<T>.. paramsType)* */String name = "com.lh.reflection.bean.Person";// 寻找该类名称字节码文件 ,并加载至内存,生成Class对象Class<Person> clazz = (Class<Person>) Class.forName(name);// 获取指定的构造器对象Constructor<Person> constructor = clazz.getConstructor(String.class, int.class);// 通过构造器Constructor类中的newInstance()方法进行初始化Person person = constructor.newInstance("小明", 20);}

三、Person类

/**
* @Title: Person.java
* @Package com.lh.reflection.bean
* @Description: TODO
* @author Liu
* @date 2018年1月23日 下午3:06:10
* @version V1.0
*/
package com.lh.reflection.bean;/*** @ClassName: Person* @Description: Person实体类* @author Liu* @date 2018年1月23日 下午3:06:10* */
public class Person {private int age;private String name;public Person() {System.out.println("constructor no param run...");}public Person(String name,int age) {this.age = age;this.name = name;System.out.println("constructor with param run..." + this.name + ":" + this.age);}public void show() {System.out.println(name + "...show run..." + age);}private void method() {System.out.println("method run");}public void paramMethod(String str, int num) {System.out.println("paramMethod run..." + str + ":" + num);}public static void staticMethod() {System.out.println("static method run...");}}

四、关键点

    1、无参实例化只需要调用class对象的newInstance()方法即可。

    2、有参实例化需要先通过getConstructor(Class<T>.. paramTypes)获取指定Constructor构造器对象,然后调用newInstance(Object.. objs)方法即可。

转载于:https://my.oschina.net/Howard2016/blog/1611962

反射机制——获取Class中的构造函数相关推荐

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

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

  2. Java反射机制——获取成员变量构造函数

    2019独角兽企业重金招聘Python工程师标准>>> Java反射机制--获取成员变量&构造函数 一.成员变量是java.lang.reflect.Field的对象 1.F ...

  3. java反射之获取class对象,Java之反射机制(获取Class对象的三种方式)

    Java之反射机制(获取Class对象的三种方式) 开发工具与关键技术:MyEclipse 10,java 作者:刘东标 撰写时间:2019-06-14 如何得到各个字节码对应的实例对象? 每个类被加 ...

  4. kettle job如何利用java的反射机制获取执行的sql语句

    kettle job中的JavaScript如何获取同一个job中SQL步骤的执行语句并让执行语句记录在日志中呢?首先写日志需要用到job中JavaScript写日志的方法,其次是利用java反射机制 ...

  5. android 巧妙利用反射机制获取控件id,避免大量冗杂的findviewbyid和butterknife注解

    android 巧妙利用反射机制获取控件id,避免大量冗杂的findviewbyid和butterknife注解 一.反射机制概述 Java 反射机制是在运行状态中,对于任意一个类,都能够获得这个类的 ...

  6. php引用公有类方法_php利用ReflectionClass反射机制获取类public公有方法

    今天遇到了一个有趣的问题,在thinkphp中设定控制器路由的时候,必须要使用getfunc postfunc 如图: 而我不想要 get post 这些前缀 在php中通过反射机制获取类的方法,然后 ...

  7. 利用反射机制获取未知类型的枚举的信息

    原文:利用反射机制获取未知类型的枚举的信息 开发游戏设置选项遇到一个问题,我有两个枚举,一个是屏幕分辨率,一个是语言 我需要在不知道一个枚举到底是哪一个枚举类型的情况下,获取这个枚举的值以及这个枚举类 ...

  8. java 反射获取对象_使用Java反射机制获取对象

    本文由广州疯狂软件教育java培训分享: 构造接口Person,所有Person都会问好,但具体讲什么语言就不知道了! package interf; public interface Person ...

  9. android中通过java的反射机制获取U盘名称

    在android项目中实现Windos一样的U盘效果,需监听两个U盘的插入和拔出状态,并屏蔽本地存储,使用U盘来下载和上传文件: 在编辑代码中碰到一个问题:无法获取插入U盘的名称,于是通过java的反 ...

最新文章

  1. git submodule 使用场景汇总
  2. lifekeeper for linxu安装步骤
  3. linux系统安装nginx步骤,虚拟机(linux)下安装nginx的步骤教程
  4. python3菜鸟教程中文-Python3 日期和时间
  5. day16T2改错记
  6. 自百度2012吧——这些都是巧合吗
  7. 音视频技术开发周刊 55期
  8. python少儿编程课件ppt_Python课程第五期
  9. 关于微信“被返回页”在被返回时自动刷新
  10. pycham窗口显示多个编辑页面
  11. Fastreport 分组多列排序问题
  12. 单片机复位电路的可靠性设计及精典实用复位电路
  13. Java刷题-蓝桥杯省赛第十一届JavaC组1---3
  14. 使用fmt:formatNumber 标签接收后端数据并格式化
  15. apmserv搭建是php环境,APMServ5.2.6一键搭建php等服务器环境视频教程
  16. 银行RPA的5个案例场景展示
  17. 微信小程序生态开发-组件注册
  18. Docker---docker安全加固之安全隔离
  19. 外壳IK碰撞冲击测试
  20. 头条,评论,发布和回复评论

热门文章

  1. [ES6] 细化ES6之 -- 变量的解构赋值
  2. Linux基础(1)--Vim编辑器的常用命令
  3. 机器学习算法(2)——AdaBoost算法
  4. 7-87 吉老师的回归 (15 分)
  5. cs go linux游戏吧,玩家分享:让CSGO画面变成舒服的暖色调
  6. as3中splice和slice的用法
  7. transform: translate()
  8. PageAdmin CMS网站建设教程:如何创建及管理栏目?
  9. vue搭建后可以改下全局配置
  10. 两个月学习Python的胡言乱语