Java中的反射机制

使用pytorch-superpoint与pytorch-superglue项目实现训练自己的数据集 superpoint与superglue的组合可以实现基于深度学习的图像配准,官方发布的superpoint与superglue模型均基于coco数据训练,与业务中的实际数据或许存在差距,为此实现基于开源的pytorch-superpoint与pytorch-superglue项目实现训练自己的数据集。然而,在训练pytorch-superpoint有诸多细节需要优化,特此整理成技术文档。本文档描述了实验pytorch-superpoint与pytorch-superglue项目训练自己的图像配准模型。 阅读详情

目录

一.概述

二.反射机制的实现原理

1.Class类(根基)

三中创建Class对象的方法:

1.已知类的字符串地址(框架自动映射参数的原理)

2.类名.class(Mybatis创建Class对象的原理)

3.对象名.class(将一个对象转json格式的原理)

三.模拟Mybatis查询后,自动数据封装

四.反射机制的优缺点

1.优点

2.缺点


一.概述

        Java反射机制是运行状态中的,对任意一个类,都能知道这个类所有的属性和方法

核心原理:java.lang.Class类

        一个Class对象表示一个正在运行时的类,我们可以通过Class类中提供的方法,拿到类中的所有的属性和方法(包括私有的),并创建类的对象,所以Class类时java反射机制的根基,一旦.class文件被加载到内存中,就会为其创建(有且仅有)一个Class对象,任何类被使用时都会创建一个Class对象

二.反射机制的实现原理

首先反射机制的实现离不开java提供的三个类:

1.Class类(根基)

Class类中提供了很多方法,可以让我们获取类中的属性和方法

三中创建Class对象的方法:

1.已知类的字符串地址(框架自动映射参数的原理)
String className = "包名.类名";
Class c = Class.forName(className);
2.类名.class(Mybatis创建Class对象的原理)
Class c = 类名.class;
3.对象名.class(将一个对象转json格式的原理)
Class c = 对象名.class;

class.forName(类地址)方法:通过类地址返回一个Class对象

newInstannce:创建对象,返回值Object类型

getFieldS():拿到所有的属性(不包括私有的),返回值是Field数组

getDeclaredFields():拿到所有的属性(包括私有的属性),返回值是Field数组

getMethods():拿到所有的方法(不包括私有的),返回值是Mehod数组

getDeclaredMethods():拿到所有的方法(包括私有的),返回值是Mehod数组

三.模拟Mybatis查询后,自动数据封装

这里详细介绍一下Mybatis自动映射以及Spring自动管理对象如何实现根据不同的类返回相应的对象,利用了泛型<T>实现,不指定返回值类型

  • 返回值是 T,调用时写出目标类型,编译器就按该类型推断并检查
  • “编译期根据参数推断 T 的具体类型”,并没有实际转换
public static <T> T putData(String className, Map<String,Object> map) throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {
        //获得传入的类地址的CLass对象
        Class c = Class.forName(className);
        System.out.println(c.getTypeName());
        //创建一个传入类的对象
        T o = (T) c.newInstance();
        //动态获得类中的属性
        Field[] fileds = c.getDeclaredFields();
        //赋值
        for (Field field:fileds)
        {
            //获得属性的名字
            String name = field.getName();
            //通过属性的名字找到对应的set方法名,将第一个字母转为大写
            String methodName = "set"+(char)(name.charAt(0)-32)+name.substring(1);
            //通过名字,获得方法对象
            Method setMethod = c.getMethod(methodName,field.getType());
            //从map取数据赋值
            setMethod.invoke(o,map.get(name));
        }
        return o;
    }

四.反射机制的优缺点

1.优点

通过反射机制可以动态调用任意类中的信息,对象中的方法,增加了程序的复用性和灵活性,例如框架,写一套可以处理任意类

2.缺点

使用反射机制效率低,可以对私有成员操作,打破了封装性,安全性低,在使用反射机制时,应该避免直接对私有成员操作

黑猫带你学eMMC协议第1篇:全网最全emmc协议中文详讲,这份学习框架图,你值得拥有!!!(持续更新中...) 黑猫带你学eMMC协议第7篇:全网最全emmc写保护详解(write protect) 黑猫带你学eMMC协议第8篇:emmc可靠写详解(Write Reliability) 黑猫带你学eMMC协议第9篇:emmc的分区配置(partitioning) 黑猫带你学eMMC协议第10篇:eMMC命令队列详解(CMDQ) 黑猫带你学eMMC协议第11篇:eMMC擦除详解(erase/trim/discard/sanitize/secure erase/secure trim…) 黑猫带你学eMMC协议第12篇: 阅读详情

相关推荐

告别单调!3种方法给VS2019换上VSCode同款NightOwl主题(附字体优化技巧)

本文详细介绍了三种将VSCode热门NightOwl主题移植到VS2019的方法,包括扩展市场直装、官方主题库导入与增强以及手动调色实现像素级复刻。同时提供了字体优化与视觉增强技巧,帮助开发者打造更舒适的编码环境。

weixin_28836989的博客 212

JAVA中的反射机制

反射,当时经常听他们说,自己也看过一些资料,也可能在设计模式中使用过,但是感觉对它没有一个较深入的了解,这次重新学习了一下,感觉还行吧!            一,先看一下反射的概念:                主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。               反

学会改变自己——才能突破 44万+

初识数据结构之入门必懂——线性表(顺序表)

本文将介绍数据结构中的线性表与线性表中最简单的结构——顺序表

m0_64705485的博客 904

java的反射机制浅谈

一、java的反射机制浅谈最近研究java研究得很给力,主要以看博文为学习方式。以下是我对java的反射机制所产生的一些感悟,希望各位童鞋看到失误之处不吝指出。受到各位指教之处,如若让小生好好感动,说不定会请各位吃饭哦!1.何谓反射机制根据网文,java中的反射机制可以如此定义:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。2.反射机制如何实现谈到反射机

Winiex's Blog 12万+

深入理解光流法外推雷达回波

背景介绍 鉴于本人实在太过疲惫和劳累,一些简单的便于理解的废话就不在记录,耗费两天时间研究了一下光流法,本帖用于记录学习过程中源码的难点细节。 使用光流预测的核心有两个利用多张连续回波图像(变分)或者相邻两张回波图(交叉相关,LK等)计算出光流场(速度矢量场),之后利用半拉格朗日方法进行外推。 半拉格朗日方法 三时间步半拉格朗日方法,其核心公式如下 但这个有点难理解,但看一维的图就很好理解 它的核心就是迭代求Am(位移矢量),如果理解困难的话,其实质上就是通过未来迭代(猜)出当前时刻的Am找到过去的假设

weixin_44695861的博客 6031

Cisco Secure ACS 5.8.0.32 安装 + Crack 教程

在ESXi 6.7 上经历过无数次的安装尝试测试了各种兼容版本都没有安装成功,记最后一次安装成功的过程.

Junior's Blog 3534

Java反射机制

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取信息以及动态调用对象的方法的功能称为java语言的反射机制。在仅知道“包名+类名”的情况下使用。动态获取类的信息。

2303_77640525的博客 2187

学Simulink--特殊天气场景实例:基于Simulink的智能车辆雨天行驶仿真(感知与控制)

本文详细介绍了基于Simulink的智能车辆雨天行驶仿真系统。通过构建降雨-路面-传感器-控制全链路耦合模型,实现了雨天场景下的自适应控制。系统根据降雨强度动态调整路面附着系数和传感器性能参数,上层控制算法相应调整ACC安全距离、ESC增益等参数。仿真结果表明,系统能在不同降雨强度下自动降低车速、增大跟车距离,保持车辆稳定性。文章还提供了完整的Simulink建模流程、关键模型实现方法及工程实践要点,为全天候自动驾驶功能开发提供了有效的验证平台。

xiaoheshang_123的博客 166

Java 反射机制

Java 反射机制是在运行状态中,对于任意一个类,都能够获得这个类的所有属性和方法,对于任意一个对象都能够调用它的任意一个属性和方法。这种在运行时动态的获取信息以及动态调用对象的方法的功能称为Java 的反射机制。     Class 类与java.lang.reflect 类库一起对反射的概念进行了支持,该类库包含了Field,Method,Constructor类(每个类都实现了Member

点滴记录 2万+

【用ArcGIS制作一张好看的中国月度气温图

要最后选中那个事先调整好的那个数据框,这样其他两个数据框才能和其大小一致。

J_Giser的博客 1017

【TCN回归预测】TCN时间卷积神经网络数据回归预测(多输入单输出)【含Matlab源码 2317期】

TCN时间卷积神经网络数据回归预测 完整的代码,方可运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版)或下载付费资源,可赠送奶茶价版付费专栏指定代码1份; 822

Java的反射机制

定义在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的。这种动态获取类的信息以及动态调用对象的方法的功能来自于Java 语言的反射(Reflection)机制。反射(Reflection)是Java语言的特性之一,能够让Java程序在运行时动态地执行类的方法、构造方法等。可以说有了反射,不管什么类在我们面前都毫无隐私可言,什么privateprotecteddefault。

晓的博客 1287

YOLOv12改进策略【Neck】| CGA Fusion:内容引导的注意力融合模块,空间权重引导的多模态特征自适应融合

本文记录的是利用CGA Fusion 模块改进 YOLOv12 的多模态融合部分。(Content-Guided Attention Fusion)通过内容引导注意力生成空间权重,引导高低层特征的自适应融合。本文利用模块,通过内容引导注意力生成空间权重,自适应地融合两个模态的特征,在特征融合阶段实现跨模态语义对齐与噪声抑制,增强对不同模态互补特征的利用能力,从而提升模型在多模态场景下的检测鲁棒性与准确性。DEA-Net: Single image dehazing based on detail-enhan

Limiiiing的博客 433

【Java】java中的反射机制

java中的反射机制 作用: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法; 对于任意一个对象,都能够调用它的任意方法和属性; .这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制 具体操作: 实例: package test; public class Student { public Student(){ } publi...

lmy 255

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java 反射机制介绍

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。Java反射机制在框架设计中极为广泛,需要深入理解 反射基础 RRIT(Run-Time Type Identification)运行时类型识别。在《Thinking in Java》一书第十四章中有提到,其作用是在运行时识别一个对象的类型和类的信息。主要有两种方式:一种是“传统的”RTTI,它假定

vincent_wen0766的博客 785

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

java反射机制的用处_java反射机制原理详解 java的反射机制用处在哪?

Java中的反射机制的原理和用途是什么?java反射机制的实现原理java反射机制有什么用,具体举例说明增加程序的灵活性。 如struts中。请CSS布局HTML小编今天和大家分享的派发控制。 当请CSS布局HTML小编今天和大家分享来到时。struts通过查询配置文件。找到该请CSS布局HTML小编今天和大家分享对应的action。已经方法。 然后通过反射实例化action。并调用响应metho...

weixin_30696571的博客 409

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

java反射机制历史_java反射机制浅谈

一、Java的反射机制浅谈最近研究java研究得很给力,主要以看博文为学习方式。以下是我对java的反射机制所产生的一些感悟,希望各位童鞋看到失误之处不吝指出。受到各位指教之处,如若让小生好好感动,说不定会请各位吃饭哦!1.何谓反射机制根据网文,java中的反射机制可以如此定义:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一...

weixin_33281940的博客 179

java 编程中的反射机制_java反射机制中的getDeclaredField()

反射机制:所谓的反射机制就是java语言在运行时拥有一项自观的能力。通过这种能力可以彻底的了解自身的情况为下一步的动作做准备。如下为getDeclaredField()的一个实例:package com.bijian.test;import java.lang.reflect.Field;import java.util.Date;public class Program {public Prog...

weixin_36376765的博客 649

java 反射机制_Java中的反射机制

java中除了基本类型以外都是class,interface也是广义上的class(例如:String,Object,Runnable,Exception),class的本质就是数据类型,我们把一个对象的实例赋值给一种 数据类型变量时,我们必须严格按照数据类型来赋值。没有继承关系的数据类型是无法赋值的。所以Java定义了一种强类型的数据关系,并且编译器会检查数据类型,不符合数据类...

weixin_39955781的博客 77
上一篇: SpringWeb详解
下一篇: Java并发编程
Vaclee
博客等级 码龄3年 471粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值