反射理解1

C#反射基础理解1 反射提供了封装程序集、模块和类型的对象(Type类型) 可以使用反射动态的创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型,然后,可以调用类型的方法或访问其字段和属性 。 总之,有了反射,以前很多实现不了的功能都可以实现。 下面先来写一个小例子,体验一下反射是怎么一回事: 打开VS2010,新建一个控制台应用程序,在program.cs里面写代码 首先引入命名空间: us... 阅读详情
web框架的核心在于反射。这需要操作xml文件和Class对象来实现。
反射应用于在编译时无法知道传递过来的参数是什么对象,只有在运行时才知道的情况下。
通过反射能获取已装载类的属性、方法、构造方法等信息。它将程序代码访问装载到jvm中的类的内部信息。
 
  Class对象:
获取Class对象的方法:
    1、通过Class.forName(实体类的完全限定名),如:Class clazz = Class.forName("com.syaccp.erp.entity.system.Role");
  2、对象名.getClass();如: String str="bdqn"; Class clazz = str.getClass();
  3、类型.Class();如Test.Class();
  4、对象名.getSuperClass();如: String str="bdqn"; Class clazz = str.getSuperClass(); 
  5、包装类.TYPE;Example:Class cl=Integer.TYPE;
    Class对象包含的主要内容:
        属性:Field对象
        方法:Method对象
        构造方法:Constructor    
文件名
说   明
getFields()
获得类的public类型的属性。
getDeclaredFields()
获得类的所有属性
getField(String name)
获得类的指定属性
getMethods()
获得类的public类型的方法
getMethod (String name,Class [] args)
获得类的指定方法
getConstrutors()
获得类的public类型的构造方法
getConstrutor(Class[] args)
获得类的特定构造方法
newInstance()
通过类的无参构造方法创建该类的一个对象
getName()
获得类的完整名字
getPackage()
获取此类所属的包
getSuperclass()
获得此类的父类对应的Class对象
以下一个例子稍微了解下方法的使用 
public class TestClass {
public static void main(String[] args) throws Exception {
Class clazz = Class.forName("java.lang.Object");
// Class clazz = Class.forName("java.lang.String");
System.out.println("------类的字段------------");
Field fields[ ] = clazz.getDeclaredFields();
for (Field field : fields)
System.out.println(field.getName() + " " + field.getType());
System.out.println("-------类的方法-----------");
Method methods[] = clazz.getDeclaredMethods();
for (Method method : methods)
System.out.println(method.getName());
System.out.println("-------类的构造方法-----------");
Constructor constructors[ ] = clazz.getDeclaredConstructors();
for (Constructor constructor : constructors)
System.out.println(constructor);
System.out.println("--------类所在包、完整名称、父类----------");
System.out.println(clazz.getPackage().getName());
System.out.println(clazz.getName());
System.out.println(clazz.getSuperclass());
}
}
上面方法列表里有个newInstance的方法,其作用是通过反射创建对象。
执行newInstance方法实质就是执行该对象的无参构造方法来创建该类的实例。下面举个例子:
 public class ConstructorTest {
public static void main(String[] args) throws Exception {
//方法1:调用Class的newInstance方法,仅适用于无参构造方法
Class clazz=Class.forName("cn.jbit.reflection.Student");
Object obj=clazz.newInstance();
                    
                    // 方法2:调用Constructor的newInstance方法,适用所有构造方法
Class clazz = Class.forName("cn.jbit.reflection.Student");
Constructor cons = clazz.getConstructor(new Class[ ]
  { String.class,int.class, float.class });
Object obj = cons.newInstance(new Object[ ] { "lkl", 32, 56.5f });
System.out.println(obj);
}
}
 
 
 
 

【1.JDK底层源码剖析】1.1 深入理解Java反射的底层实现 🔍 Java反射机制底层原理深度剖析(摘要) 本文基于Java 11源码,从以下维度深入分析Java反射机制的底层实现: 核心组件与架构:反射API围绕Class、Method、Constructor等核心类构建,通过AccessibleObject提供访问控制能力,支持运行时自省与动态操作类结构。 类加载与缓存机制:Class.forName()通过本地方法forName0实现动态加载,采用软引用缓存反射数据以平衡性能与内存效率。 方法调用实现:Method.invoke()采用动态字节码生成(通过Me 阅读详情

相关推荐

Power Automate Desktop实战:一键自动登录Chrome网站

本文详细介绍了如何使用Power Automate Desktop实现Chrome网站的一键自动登录,提升工作效率。从环境准备、基础配置到高级技巧与异常处理,全面解析自动化登录流程的构建与优化,特别适合需要频繁登录多个系统的用户。

weixin_29231725的博客 468

Java反射:Class类的使用

通过Java反射机制,可以在程序中访问已经转载到JVM中的Java对象的描述,实现访问、检测和修改描述Java对象本身信息的功能。Java反射机制的功能十分强大,在java.lang.reflect包中提供了对该功能的支持。 所有Java类均继承了Object类,在Object类中定义了一个getClass()方法,该方法返回一个类型为Class的对象。 JTextField textFie...

pan_junbiao的博客 4467

Android T GPS 定位流程

Gps 定位

好记性不如烂笔头 1356

new Class{}形式

先看下面代码 Test.java public class Test { public static void main(String[] args) { A a=new A() { @Override void ceshi() { System.out.println(ces...

weixin_34399060的博客 527

abaqus 6.13安装(ubuntu 16.04LTS)

1。从iso将文件拷贝出来 2。chmod 777 -R ./* 给文件权限 3。sudo /home/xx/A/setup 4。安装licenseserver 5。拷贝lic,log文件 6。打开license sudo ./lmgrd -c path 7. 27011@xx or 27011@localhost ...

a1099313374的博客 1950

ubuntu20.04运行VINS-Mono(跑EuRoC数据集)

在VINS-Mono主工程目录下的config子目录中找到euroc文件夹,并打开其中的euroc_config.yaml文件,将其中结果输出保存路径修改为本地的绝对路径或相对路径。应该是这个功能包路径没有成功得到,直接注释了这一行,改成你电脑中安装的vins_mono的pose_graph这个功能包路径,备注:直接下可能因为包太大下不下来,我是下载的zip,再解压,将VINS-Mono-master重命名为VINS-Mono。,当时参考了几篇不同的文章,感觉我的这个配置应该也可以编译,就先尝试了一下。

2301_80311277的博客 2983

Java产生Class类的三种实例化对象的方法

Java产生Class类的三种实例化对象的方法 1.object.getClass 2.类名.class直接根据某个具体的类来取得Class实例化对象 3.Class.forName(String className) public class TestClass { public static void main(String[] args) { //1.object.g...

迁就100 1万+

在 Windows 上使用 Anaconda 创建 配置 YOLOv8虚拟环境,并更改 pip 源以及以 可编辑模式 安装ultralytics

前往 NVIDIA cuDNN 下载页面,下载与您安装的 CUDA 版本匹配的 cuDNN 版本。:根据您的系统和 CUDA 版本,选择适当的 whl 文件。如下12.7,表示最高可装12.7版本CUDA,与上图中的支持的最高cuda版本一致。,无需重新安装,从而大幅提升开发效率,适用于项目开发、调试或依赖本地未发布的版本时使用,但需确保当前目录包含。:访问 NVIDIA 官方网站,下载与您的显卡和操作系统兼容的 CUDA 版本。首先,确保NVIDIA 显卡支持 CUDA,并安装相应版本的驱动程序。

weixin_44115575的博客 1893

对Java反射机制的理解(1)

概念和用处 Java 程序中的很多对象在运行时都会出现两种类型:编译时类型和运行时类型。例如:person p = new Student(); 产生的p变量在编译时的类型为Person,运行时的类型为Student;假设在运行时接受到一个对象,改对象编译时类型是Object,但程序又需要调用该对象运行时的方法。解决方法: (1)假设在编译时和运行时都完全知道类型的具体信息,直接使用instanceof 云算法进行判断,再利用强制类型转换成运行时的变量; (2)假设编译时根本

怕什么真理无穷, 进一寸有一寸的欢喜 558

使用Simulink进行四足机器人的非线性动力学建模与仿真

四足机器人的运动包含多个自由度(DOF),包括腿部的摆动和支撑阶段的动力学特性。由于存在接触力、摩擦以及不同地形的影响,四足机器人的动力学行为呈现出高度的非线性特征。因此,构建准确的非线性动力学模型对于研究机器人的运动学和动力学特性至关重要。定义代表机器人状态的变量,如位置、速度、角度和角速度。matlab深色版本通过本指南,我们介绍了如何基于Simulink搭建一个四足机器人的非线性动力学模型,并进行了详细分析。

xiaoheshang_123的博客 311

【精品5万字图文详解】特征平台建设方案与最佳实践

关键词:特征工程、特征平台、特征存储、特征服务、机器学习、数据工程摘要:本文全面介绍了特征平台的建设方案与最佳实践,从特征工程的基本概念出发,深入剖析了特征平台的核心组件、架构设计和实现方法。文章通过生动的类比和实例,使读者能够轻松理解特征工程的重要性及特征平台如何解决企业在机器学习过程中面临的数据管理挑战。同时,详细探讨了主流开源特征平台的对比分析、系统设计要点、实际落地案例以及未来发展趋势,为企业构建高效特征平台提供了全面的指导和参考。想象一下,小明是一位热爱烹饪的小学生。有一天,他想做一道美味的菜肴送

AI天才研究院 954

.NET进阶——深入理解反射(1)反射入门

C# 反射机制完整指南 本文全面介绍了C#中强大的反射机制,主要内容包括: 反射核心概念:程序运行时动态获取和操作类型信息的能力,包括获取类型、创建实例、调用方法等。 核心组件:System.Reflection命名空间下的关键类(Type、Assembly、MethodInfo等)及其作用。 基础操作: 获取类型的3种方式 动态创建实例的2种方法 动态调用方法 访问/修改属性和字段 处理泛型类型 应用场景:反射是实现灵活设计(如工厂模式、依赖注入)的核心工具,但也需注意性能开销和封装性问题。 文章通过代码

weixin_74015804的博客 902

RK3588开发笔记-Buildroot编译Qt5WebEngine-5.15.10

Rockchip RK3588是一款强大的多核处理器,广泛应用于边缘计算、人工智能、嵌入式系统等领域。为了在RK3588上运行自定义的Linux系统,并使用Qt5WebEngine进行Web内容渲染,Buildroot是一个非常合适的工具。本文将详细介绍如何使用Buildroot编译并配置Qt5WebEngine-5.15.10。Qt5WebEngine是Qt框架中的一个模块,它提供了一个功能强大的Web浏览器引擎,允许开发者在Qt应用程序中嵌入和显示现代网页内容。

flypig has a dream! 1159

理解php反射机制-1

相信大家在使用Php过程中常常会用到像

clh604的专栏 4181

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

java基础复习—反射1、反射机制 2、反射作用 3、通过代码理解反射机制

标题:java基础复习—反射 学习内容: 1、反射机制 2、反射作用 3、通过代码理解反射机制 内容详情: 1、反射机制 Person person =new Person(); 首先这个简单的创造对象的过程 Person 在方法区,保存的是这个类的信息 person 在栈,是一个变量,它指向堆内存的new Person();对象 new Person();在堆内,它指向方法区的类信息 经过javac编译后生成的字节码文件通过类加载器,加载进内存,关于类的信息都在方法区,反射机制就是将类的各个组成部分

jxbjr的博客 215

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

我对反射和代理的理解(1)

 至于反射和代理的定义以及它们所带来的好处,我就不多说了,这方面的资料网上很多,想了解的朋友,可以自己查.   我还是从实用角度出发,来谈谈反射和代理的一些相关知识. 一 反射(reflect)    java的反射是通过反射API来实现的,也就是说在java JDK中提供了一个反射类reflect,它位于java.lang.reflect包中.    在学习和理解refl

mygod_java的专栏 881

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

OC 反射机制的理解(1)

了解反射机制 Objective-C语言中的OC对象,都继承自NSObject类。这个类为我们提供了一些基础的方法和协议,我们可以直接调用从这个类继承过来方法。当然,本篇文章中讲到的反射方法,就在NSObject和Foundation框架中。 反射机制涉及到的东西比较多,这篇文章只从OC层面来讲反射机制,不涉及runtime部分,以后会写文章来专门讲runtime的。 总的来说我

天王盖地虎 2259

反射获取类_java反射系列1(反射的概括、Class类的理解与获取Class的实例)

反射的概括1.Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。框架 = 反射 + 注解 + 设计模式。2.体会反射机制的“动态性”//体会反射的动态性@Testpublic void test2(){ for(int i = 0;i < 100;i++){ int num...

weixin_29098391的博客 108

C#反射基础理解1(转)

反射提供了封装程序集、模块和类型的对象(Type类型) 可以使用反射动态的创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型,然后,可以调用类型的方法或访问其字段和属性 。 总之,有了反射,以前很多实现不了的功能都可以实现。 下面先来写一个小例子,体验一下反射是怎么一回事: 打开VS2010,新建一个控制台应用程序,在program.cs里面写代码 首先引入命名空间: u...

weixin_34375251的博客 96

Java-reflect(反射)初步理解_1

27.01_反射(类的加载概述和加载时机) A:类的加载概述 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。 加载 就是指将class文件读入内存,并为之创建一个Class对象。任何类被使用时系统都会建立一个Class对象。 连接 验证 是否有正确的内部结构,并和其他类协调一致 准备 负责为类的静态成员分配内存,并...

azhrrvsfz270786493的博客 159

JVM编译、加载、反射 理解-1

一个Java源文件,会被JVM编码成.class文件(字节码文件),每个java程序都需要运行在自己的JVM上,再告知JVM程序的运行入口,再被JVM通过类加载器加载到内存中。当程序要使用某个类的时候,如果这个类没有被加载到内存中,则系统会通过类的加载,类的连接,类的初始化将这三个步骤来对类进行初始化。 类的加载:Class类是运行时类型信息的对应类,对于手动编写的类,在JVM编译时会为这个类创...

weixin_43184220的博客 174

初识 C# 反射:理解与应用(1)

在 C# 中,反射(Reflection)是一种强大的机制,它允许我们在运行时获取类型的信息并动态地调用对象的成员。通常情况下,反射的操作对象包括类的字段(Field)和属性(Property)。本文将通过一个简单的示例,展示如何使用反射动态地获取和设置类的字段值。

m0_67212712的博客 551

android person类_java反射系列1(反射的概括、Class类的理解与获取Class的实例)

反射的概括1.Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。框架 = 反射 + 注解 + 设计模式。2.体会反射机制的“动态性”//体会反射的动态性@Testpublic void test2(){ for(int i = 0;i < 100;i++){ int num...

weixin_39831039的博客 290
上一篇: Struts2理解——转发和重定向
下一篇: JSON的使用_检查JSON工具
路克虎
博客等级 码龄18年 7粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值