当前位置: 首页 > news >正文

第十八节:第三部分:java高级:反射-获取构造器对象并使用

Class提供的获取类构造器的方法以及获取类构造器的作用

Class提供的获取类构造器的方法以及获取类构造器的作用

代码:掌握获取类的构造器,并对其进行操作

Cat类

package com.itheima.day9_reflect;public class Cat {private String name;private int age;private Cat(String name, int age) {this.name = name;this.age = age;System.out.println("有参数构造器执行了~~");}private Cat() {System.out.println("无参数构造器执行了~~");}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Cat{" +"name='" + name + '\'' +", age=" + age +'}';}
}

Test2Constructor类(主程序)

package com.itheima.day9_reflect;import org.junit.Test;import java.lang.reflect.Constructor;/*
* 目标:掌握获取类的构造器,并对其进行操作。
* */
public class Test2Constructor {@Test//获取全部构造器public void testGetConstructors() throws Exception {//1、反射第一步:必须先得到这个类的Class对象Class c = Cat.class;// 2、获取类的全部构造器// Constructor[] constructors = c.getConstructors();Constructor[] constructors = c.getDeclaredConstructors();// 3、遍历数组中的每个构造器对象for (Constructor constructor : constructors) {System.out.println(constructor.getName()+"====>"+constructor.getParameterCount());}}@Testpublic void testGetConstructor() throws Exception {//1、反射第一步:必须先得到这个类的Class对象Class c = Cat.class;// 2、获取某个构造器:无参数构造器//Constructor constructor2 = c.getConstructor();Constructor constructor1 = c.getDeclaredConstructor();System.out.println(constructor1.getName()+"====>"+constructor1.getParameterCount());constructor1.setAccessible(true);//禁止检查访问权限Cat cat = (Cat) constructor1.newInstance();System.out.println(cat);// 3、获取有参数构造器Constructor constructor2 = c.getDeclaredConstructor(String.class, int.class);System.out.println(constructor2.getName()+"====>"+constructor2.getParameterCount());constructor2.setAccessible(true);//禁止检查访问权限Cat cat2 = (Cat) constructor2.newInstance("叮当猫",3);System.out.println(cat2);}
}

结果

http://www.dtcms.com/a/284313.html

相关文章:

  • 【参数初始化】——深度学习.全连接网络
  • Cadence SPB 2024软件下载及安装教程|Cadence软件安装详细步骤附下载链接
  • Spring IoCDI_2_使用篇
  • Anime.js 超级炫酷的网页动画库详解
  • 【图像质量评价指标】信噪比(Signal-to-Noise Ratio,SNR)
  • Linux 基础指令
  • makefile missing separator. Stop.问题
  • 一款实用的.NET Core加密解密工具类库
  • C++11之lambda表达式与包装器
  • 20.轮廓特征与近似,改变图像的轮廓识别画线的精确度,同时画出轮廓对应的矩形
  • GitHub 趋势日报 (2025年07月16日)
  • 【Burp入门第三十八篇】Repeater Strike:AI 驱动的 Burp Suite 插件
  • Effective Modern C++ 条款13:优先考虑const_iterator而非iterator
  • Magenta RT 正式开源!实时生成多种风格音乐,让创作无门槛
  • 【C++详解】STL-stack、queue的模拟实现,容器适配器,deque双端队列介绍
  • Java 大视界 -- Java 大数据在智能交通智能公交站台乘客流量预测与服务优化中的应用(349)
  • 19.删除链表的倒数第 N 个结点
  • 多线程--sem_wait(sem)特殊用法
  • 拿到安全工程师证后,能从事哪些岗位?
  • C函数实现strcopy strcat strcmp strstr
  • javax.servlet.http.HttpServletResponse;API导入报错解决方案
  • Kotlin集合与空值
  • 产品经理如何绘制流程图
  • Linux中的数据库操作基础
  • SpringMVC 执行原理
  • 79、【OS】【Nuttx】【启动】caller-saved 和 callee-saved 示例:r7 寄存器
  • Modbus
  • PyCharm2024安装包社区版和专业版
  • TESOLLO五指灵巧手遥操作解决方案
  • 使用 .NET Core 的原始 WebSocket