01_反射_02_反射类的构造方法
【工程截图】
【Person.java】 //将要被反射的类
package com.Higgin.reflect; import java.util.List;public class Person {private String name="NULL";private int age=0;public Person(){System.out.println("构造方法:Person()");}public Person(String name){System.out.println("构造方法:Person(String name)");this.name=name;}public Person(String name,int age){this.name=name;this.age=age;System.out.println("构造方法:Person(String name,int age)");}/*** 注意:是private 私有的!!!!!!!!*/private Person(List list){System.out.println("构造方法:Person(List list)");System.out.println("list.get(0):"+list.get(0));}public void sayHello(){System.out.println(name+" say: hello world!");System.out.println("I'm "+age+" years old");} }
【情况一】
【Demo01.java】测试反射无参构造方法Person()
/** 反射Person类的 Person()构造方法,创建类的对象* @throws Exception*/@Testpublic void test1() throws Exception{Class clazz=Class.forName("com.Higgin.reflect.Person");//反射构造方法:public Person()Constructor c=clazz.getConstructor(null); Person p=(Person)c.newInstance(null);p.sayHello();}
【运行结果】
【情况二】
【Demo01.java】测试反射有参构造方法Person(Strng name)
/** 反射构造方法:public Person(String name)*/@Testpublic void test2() throws Exception{Class clazz=new Person().getClass(); //注意,这里其实已经先创建了一个对象(因为new Person())//反射构造方法:public Person(String name)Constructor c=clazz.getConstructor(String.class);Person p=(Person) c.newInstance("Jack");p.sayHello();}
【运行结果】
【情况三】
【Demo01.java】测试Person(String name,int age)的情况
/** 反射构造方法:public Person(String name,int age)*/@Testpublic void test3() throws Exception{Class clazz=Person.class;//反射构造方法:public Person(String name,int age)Constructor c=clazz.getConstructor(String.class,int.class);Person p=(Person) c.newInstance("Jack",18);p.sayHello();}
【运行结果】
【情况三】
【Dem01.java】测试private Person(List list)的i情况,注意是私有的
/** 注意是私有的* 反射构造方法:private Person(List list)*/@Testpublic void test4() throws Exception{Class clazz=Person.class;//反射构造方法:private Person(List list)Constructor c=clazz.getDeclaredConstructor(List.class); c.setAccessible(true); //暴力反射,没有这句会出错的!!!!!!!!List list=new ArrayList();list.add("6666666");Person p=(Person) c.newInstance(list);p.sayHello();}
【运行结果】
【创建对象的另外一种写法】等同于test1()的测试方法
/*** 创建对象的另外一种方式* @throws Exception*/@Testpublic void test5() throws Exception{Class clazz=Class.forName("com.Higgin.reflect.Person");Person p=(Person)clazz.newInstance(); //本质就是反射类的无参构造方法反射对象 p.sayHello();}
【运行结果】
转载于:https://www.cnblogs.com/HigginCui/p/5767098.html
01_反射_02_反射类的构造方法相关推荐
- 反射应用--取得类的结构
1,目标: 通过反射取得类的全部接口, 取得类所继承的父类 取得类全部构造方法 通过反射取得类的全部方法 通过反射取得一个类的全部属性. 具体类型 反射的深入-取得类的结构 要想通过反射取得类的结构, ...
- java反射怎么获取结构体_java反射-使用反射获取类的所有信息
在OOP(面向对象)语言中,最重要的一个概念就是:万事万物皆对象. 在java中,类也是一个对象,是java.lang.Class的实例对象,官网称该对象为类的类类型. Class 类的实例表示正在运 ...
- java 反射获取修饰符_java之反射和BeanUtils类
反射和BeanUtils类 1. 类的初始化:类什么什么情况下会加载到内存中 只要类加载到内存中,那么类加载器就会为这个类创建一个class文件对象 2. javaBean:数据库中的表和java中的 ...
- java中的反射和Class类
动态语言 VS 静态语言: 动态语言是一类在运行时可以改变其结构的语言,例如:新的函数对象甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化,通俗点说就是在运行时,代码可以根据某些条件改变自 ...
- Java中反射相关的类
目录 反射 反射相关的类 1. Class类--反射核心类 2. Constructor类--通过反射调用构造方法 破坏封装对象 3. Method类--通过反射调用普通方法 4. Field类--通 ...
- 【JavaLearn】(19)反射、Class类、使用反射创建对象-操作属性-执行方法、泛型与反射、反射案例
目录 1. 反射 1.1 反射引入 1.2 反射的入口-Class类 2. 认识 Class 类 3. 使用反射创建对象 4. 使用反射操作属性 5. 使用反射执行方法 6. 使用反射操作泛型 6.2 ...
- 【JavaLearn】#(19)反射、Class类、使用反射创建对象-操作属性-执行方法、泛型与反射、反射案例
1. 反射 1.1 反射引入 编译时,知道类或对象的具体信息,此时直接对类和对象进行操作即可 编译时不知道类或对象的具体信息,只有运行时知道,需要使用反射来实现 ==> 比如驱动的类的名称放在 ...
- org.reflections 接口通过反射获取实现类源码研究
org.reflections 接口通过反射获取实现类源码研究 版本 org.reflections reflections 0.9.12 Reflections通过扫描classpath,索引元数据 ...
- java 动态获取类实例化_Java:使用反射动态实例化类
使用反射动态实例化类,可以在运行时根据参数实例化不同的类,比如使用简单的工厂模式. Factory类: public class Factory { public static Component g ...
最新文章
- 详解 Weex JS Framework 的编译过程
- maven的内部属性
- Dos 改动IP 地址
- QT的QStackedLayout类的使用
- .gitignore失效 无法忽略node_modules问题
- [NOI2021 day1]轻重边(树链剖分),路径交点(矩阵行列式)
- (一)容器从入门到深入-容器和镜像
- 2020年9月26日-02-软件工程-工程化思维+瀑布模型+敏捷开发
- 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 23丨学生们参加各科测试的次数【难度简单】​
- 阿里巴巴Aliware十年微服务架构演进历程中的挑战与实践
- ios 添加block 类别_ios block是什么数据类型?
- 中原工学院计算机网络,计算机网络 考试重点 中原工学院.doc
- 如何让你的SQL运行得更快(二)
- CPC客户端离线升级失败,不能获取updatesipo信息,可能你的软件在线更新程序没有安装
- co作为前缀的意思_智课雅思词汇---十五、前缀co-com-con-col-cor-是什么意思
- python三大框架_python 三大框架的 介绍。
- SQL Server的时态和历史表
- 直角三角形面积Java_利用Eclipse编写第一个简单的Java程序,实现如下功能。 键盘输入:直角三角形两直角边a, b,根据勾股定理计算斜边的平方值。并输出。 例如:运行效果如下...
- 网络可以做什么副业?网上有哪些赚钱的副业?
- 如何批量输出条形码图片