【工程截图】

【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. 反射应用--取得类的结构

    1,目标: 通过反射取得类的全部接口, 取得类所继承的父类 取得类全部构造方法 通过反射取得类的全部方法 通过反射取得一个类的全部属性. 具体类型 反射的深入-取得类的结构 要想通过反射取得类的结构, ...

  2. java反射怎么获取结构体_java反射-使用反射获取类的所有信息

    在OOP(面向对象)语言中,最重要的一个概念就是:万事万物皆对象. 在java中,类也是一个对象,是java.lang.Class的实例对象,官网称该对象为类的类类型. Class 类的实例表示正在运 ...

  3. java 反射获取修饰符_java之反射和BeanUtils类

    反射和BeanUtils类 1. 类的初始化:类什么什么情况下会加载到内存中 只要类加载到内存中,那么类加载器就会为这个类创建一个class文件对象 2. javaBean:数据库中的表和java中的 ...

  4. java中的反射和Class类

    动态语言 VS 静态语言: 动态语言是一类在运行时可以改变其结构的语言,例如:新的函数对象甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化,通俗点说就是在运行时,代码可以根据某些条件改变自 ...

  5. Java中反射相关的类

    目录 反射 反射相关的类 1. Class类--反射核心类 2. Constructor类--通过反射调用构造方法 破坏封装对象 3. Method类--通过反射调用普通方法 4. Field类--通 ...

  6. 【JavaLearn】(19)反射、Class类、使用反射创建对象-操作属性-执行方法、泛型与反射、反射案例

    目录 1. 反射 1.1 反射引入 1.2 反射的入口-Class类 2. 认识 Class 类 3. 使用反射创建对象 4. 使用反射操作属性 5. 使用反射执行方法 6. 使用反射操作泛型 6.2 ...

  7. 【JavaLearn】#(19)反射、Class类、使用反射创建对象-操作属性-执行方法、泛型与反射、反射案例

    1. 反射 1.1 反射引入 编译时,知道类或对象的具体信息,此时直接对类和对象进行操作即可 编译时不知道类或对象的具体信息,只有运行时知道,需要使用反射来实现 ==> 比如驱动的类的名称放在 ...

  8. org.reflections 接口通过反射获取实现类源码研究

    org.reflections 接口通过反射获取实现类源码研究 版本 org.reflections reflections 0.9.12 Reflections通过扫描classpath,索引元数据 ...

  9. java 动态获取类实例化_Java:使用反射动态实例化类

    使用反射动态实例化类,可以在运行时根据参数实例化不同的类,比如使用简单的工厂模式. Factory类: public class Factory { public static Component g ...

最新文章

  1. 详解 Weex JS Framework 的编译过程
  2. maven的内部属性
  3. Dos 改动IP 地址
  4. QT的QStackedLayout类的使用
  5. .gitignore失效 无法忽略node_modules问题
  6. [NOI2021 day1]轻重边(树链剖分),路径交点(矩阵行列式)
  7. (一)容器从入门到深入-容器和镜像
  8. 2020年9月26日-02-软件工程-工程化思维+瀑布模型+敏捷开发
  9. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 23丨学生们参加各科测试的次数【难度简单】​
  10. 阿里巴巴Aliware十年微服务架构演进历程中的挑战与实践
  11. ios 添加block 类别_ios block是什么数据类型?
  12. 中原工学院计算机网络,计算机网络 考试重点 中原工学院.doc
  13. 如何让你的SQL运行得更快(二)
  14. CPC客户端离线升级失败,不能获取updatesipo信息,可能你的软件在线更新程序没有安装
  15. co作为前缀的意思_智课雅思词汇---十五、前缀co-com-con-col-cor-是什么意思
  16. python三大框架_python 三大框架的 介绍。
  17. SQL Server的时态和历史表
  18. 直角三角形面积Java_利用Eclipse编写第一个简单的Java程序,实现如下功能。 键盘输入:直角三角形两直角边a, b,根据勾股定理计算斜边的平方值。并输出。 例如:运行效果如下...
  19. 网络可以做什么副业?网上有哪些赚钱的副业?
  20. 如何批量输出条形码图片

热门文章

  1. 操作系统的中断和异常
  2. 100个网络基础知识,赶紧收藏吧!
  3. 收集53个程序员励志名言
  4. Linux常见英文报错中文翻译(菜鸟必知)
  5. java枚举返回字符串_Java新特性:数据类型可以扔掉了?
  6. ajax类型的区别,ajax请求的类型 有post get 请问两种有何区别?
  7. 使用ESCAPE定义转义符
  8. 同态加密应用_重新设计具有同态性的银行应用
  9. Using Python with Oracle
  10. MySQL默认数据库简介