当前位置: 首页 > 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.lryc.cn/news/591862.html

相关文章:

  • MYOJ_8518:CSP初赛题单3:数制练习专项
  • 【Java】文件编辑器
  • CSP-S模拟赛三(仍然是难度远超CSP-S)
  • 【Linux】LVS(Linux virual server)
  • 网络爬虫的详细知识点
  • Spring 多模块配置国际化,MessageSource只能加载一个文件
  • 栈和队列的题目,咕咕咕
  • Python基础--嵌套循环
  • 尚庭公寓----------分页查询
  • 【人工智能99问】梯度消失、梯度爆炸的定义、后果及规避手段?(7/99)
  • 树莓派Qt 安装
  • 数据结构 栈(1)
  • 常用API
  • 【深度学习新浪潮】AI在finTech领域有哪些值得关注的进展?
  • Redis中什么是看门狗机制
  • Paimon 动态分桶
  • 大型语言模型的白日梦循环
  • 【软件测试】软件测试分类与方法解析:目标到工具
  • LINUX例行性工作(计划任务)实验操作 ---at和crontab以及系统级别的计划任务
  • Python学习之——序列化与反序列化
  • 链路聚合实训
  • 解决 MyBatis/MyBatis-Plus 中 UUID 类型转换错误的最佳实践
  • MS Project替代方案:5款项目管理工具测评,8Manage PM为何更优?
  • vue svg实现一个环形进度条组件
  • 进程终止机制详解:退出场景、退出码与退出方式全解析
  • STM32 IAR 生成工程后配置
  • 时序数据库选型指南︰为什么IoTDB成为物联网场景首选?
  • UML用例规范,use case diagram
  • halcon 检测直线
  • OpenCV学习笔记二(色彩空间:RGB、HSV、Lab、mask)