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

wordpress 站外链接辉县市工程建设网站建设

wordpress 站外链接,辉县市工程建设网站建设,武威市市建设局网站建筑业管理,安徽安庆中考成绩查询java反射是java语言中一个强大而灵活的特性,它允许程序在运行时检查和操作类、接口、字段和方法。 为了方便理解下文,我先给出Cat对象 public class Cat implements jump,Run {private int age;public String name;protected String color;double he…

java反射是java语言中一个强大而灵活的特性,它允许程序在运行时检查和操作类、接口、字段和方法。

为了方便理解下文,我先给出Cat对象
 

public class Cat implements jump,Run {private int age;public String name;protected String color;double height;Cat(String color){this.color=color;}public Cat(int age, String name, String color, double height) {super();this.age = age;this.name = name;this.color = color;this.height = height;}public void run(String name) {System.out.print("小猫的名字"+name);}private int setAge(int age) {return age;}void fly() {System.out.println("猫不会飞");}
}

什么是反射?

直观理解是:反射式获取类信息的一种能力

而什么又是类信息呢?可以大致概括为:方法/变量,构造器/继承和实现类或接口

反射基础:获取class对象

要使用反射,首先需要获取目标类的class对象。常见的方式:
 

// 1. 通过对象实例的getClass()方法
Cat cat = new Cat("black");
Class class1 = cat.getClass();// 2. 通过类字面常量.class语法
Class class2 = Cat.class;// 3. 通过Class.forName()方法
Class class3 = Class.forName("com.qcby.反射.Cat");// 这三种方式获取的Class对象是相同的
System.out.println(class1 == class2); // true
System.out.println(class2 == class3); // true

 

获取构造方法

通过Class对象可以获取类的构造方法:

Class clazz = Class.forName("com.qcby.反射.Cat");
// 获取所有声明的构造方法(包括非public的)
Constructor[] constructors = clazz.getDeclaredConstructors();
System.out.println(Arrays.toString(constructors));// 获取所有public构造方法
Constructor[] publicConstructors = clazz.getConstructors();
System.out.println(Arrays.toString(publicConstructors));// 获取特定参数的构造方法
Constructor specificConstructor = clazz.getDeclaredConstructor(String.class);
System.out.println(specificConstructor);

 

获取接口信息:

反射也可以获取类实现的接口:

Class clazz = Class.forName("com.qcby.反射.Cat");Class[] interfaces = clazz.getInterfaces();System.out.println(Arrays.toString(interfaces));

 

获取字段方法:

Class clazz = Class.forName("com.qcby.反射.Cat");// 获取字段
Field[] fields = clazz.getDeclaredFields();// 获取方法
Method[] methods = clazz.getDeclaredMethods();

 

declared与非declared方法的区别

方法类型包含范围访问权限限制
getField()/getMethod()仅返回public成员(包括继承的)不包含非public成员
getDeclaredField()/返回本类声明的所有成员包含private/protected成员
getDeclaredMethod()(不包括继承的)需要setAccessible(true)

 方法签名的精确匹配

// Cat类中的方法定义
public void run(String name) {...}
private int setAge(int age) {...}// 正确获取方式
Method runMethod = catClass.getMethod("run", String.class);
Method setAgeMethod = catClass.getDeclaredMethod("setAge", int.class);// 错误示例(会抛出NoSuchMethodException)
Method wrongMethod1 = catClass.getMethod("run");  // 缺少参数
Method wrongMethod2 = catClass.getMethod("setAge", int.class);  // 忽略private限制

 

最后我给你一张图,可以清晰的看到获取Class对象是如何获取的

 

 

 

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

相关文章:

  • 湖南3合1网站建设电话网站建设v5star
  • 柳州市住房和城乡建设局网站首页wordpress 读取副标题
  • 传统文化传播公司网站建设wordpress 栏目 伪静态化
  • 辽宁手机响应式网站建设wordpress 学术 模板
  • 人工智能与数字艺术 - AI技术创意应用(多模态、数字展演、游戏、元宇宙)
  • 网站建设综合设计html5网页设计源代码
  • 免费网站建设模板下载网络营销推广主要做什么
  • 临沂酒店建设信息网站沈阳专业的网站设计公司
  • 网站制作明细清单龙岩网红阙佩琪
  • 华强北做网站昆明做网站公司
  • Spring属性配置解析机制详解
  • dede视频网站源码网站开发 语言
  • Python Web 开发入门指南
  • 9.21记录
  • 传媒公司做网站条件公司网站优化外包
  • 仓颉编程语言青少年基础教程:异常处理
  • 政务网站建设及管理搜索引擎优化的名词解释
  • AP2协议与AI Agent经济:重塑金融生态与主权国家挑战
  • 机器学习之损失函数
  • 语义三角论对人工智能自然语言处理的深层语义分析的影响与启示
  • 佛山市住房和城乡建设部网站姓氏变logo设计免费生成
  • DOS与DDOS攻击防御详解
  • 【Git】基本概念 + 基操
  • 建设优化网站wordpress侧导航菜单
  • 网站建设项目执行情况报告模板手机wap网站下载
  • 【笔试强训】Day01
  • 网站的想法夫唯seo
  • 阿里云建站套餐旅游网站排行榜前十名官网
  • 上饶网站开发 app开发做移动网站点击软件
  • 常州微信网站建设流程北京免费模板建站