反射机制——获取Class中的构造函数
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中的构造函数相关推荐
- 【反射机制】Java中的反射机制,使用反射机制创建对象、访问属性、方法、构造方法等
这篇文章主要是整理了Java中的反射机制,包括:反射机制概念.反射机制访问构造方法.反射机制访问普通方法.反射机制访问属性,反射机制访问修饰符. 目录 一.反射机制概念 二.反射机制使用 (1)加载C ...
- Java反射机制——获取成员变量构造函数
2019独角兽企业重金招聘Python工程师标准>>> Java反射机制--获取成员变量&构造函数 一.成员变量是java.lang.reflect.Field的对象 1.F ...
- java反射之获取class对象,Java之反射机制(获取Class对象的三种方式)
Java之反射机制(获取Class对象的三种方式) 开发工具与关键技术:MyEclipse 10,java 作者:刘东标 撰写时间:2019-06-14 如何得到各个字节码对应的实例对象? 每个类被加 ...
- kettle job如何利用java的反射机制获取执行的sql语句
kettle job中的JavaScript如何获取同一个job中SQL步骤的执行语句并让执行语句记录在日志中呢?首先写日志需要用到job中JavaScript写日志的方法,其次是利用java反射机制 ...
- android 巧妙利用反射机制获取控件id,避免大量冗杂的findviewbyid和butterknife注解
android 巧妙利用反射机制获取控件id,避免大量冗杂的findviewbyid和butterknife注解 一.反射机制概述 Java 反射机制是在运行状态中,对于任意一个类,都能够获得这个类的 ...
- php引用公有类方法_php利用ReflectionClass反射机制获取类public公有方法
今天遇到了一个有趣的问题,在thinkphp中设定控制器路由的时候,必须要使用getfunc postfunc 如图: 而我不想要 get post 这些前缀 在php中通过反射机制获取类的方法,然后 ...
- 利用反射机制获取未知类型的枚举的信息
原文:利用反射机制获取未知类型的枚举的信息 开发游戏设置选项遇到一个问题,我有两个枚举,一个是屏幕分辨率,一个是语言 我需要在不知道一个枚举到底是哪一个枚举类型的情况下,获取这个枚举的值以及这个枚举类 ...
- java 反射获取对象_使用Java反射机制获取对象
本文由广州疯狂软件教育java培训分享: 构造接口Person,所有Person都会问好,但具体讲什么语言就不知道了! package interf; public interface Person ...
- android中通过java的反射机制获取U盘名称
在android项目中实现Windos一样的U盘效果,需监听两个U盘的插入和拔出状态,并屏蔽本地存储,使用U盘来下载和上传文件: 在编辑代码中碰到一个问题:无法获取插入U盘的名称,于是通过java的反 ...
最新文章
- git submodule 使用场景汇总
- lifekeeper for linxu安装步骤
- linux系统安装nginx步骤,虚拟机(linux)下安装nginx的步骤教程
- python3菜鸟教程中文-Python3 日期和时间
- day16T2改错记
- 自百度2012吧——这些都是巧合吗
- 音视频技术开发周刊 55期
- python少儿编程课件ppt_Python课程第五期
- 关于微信“被返回页”在被返回时自动刷新
- pycham窗口显示多个编辑页面
- Fastreport 分组多列排序问题
- 单片机复位电路的可靠性设计及精典实用复位电路
- Java刷题-蓝桥杯省赛第十一届JavaC组1---3
- 使用fmt:formatNumber 标签接收后端数据并格式化
- apmserv搭建是php环境,APMServ5.2.6一键搭建php等服务器环境视频教程
- 银行RPA的5个案例场景展示
- 微信小程序生态开发-组件注册
- Docker---docker安全加固之安全隔离
- 外壳IK碰撞冲击测试
- 头条,评论,发布和回复评论