Java 反射机制 和 绑定属性资源文件

反射机制
1、反射机制有什么用?
通过 java 语言中的反射机制可以操作字节码文件。
有点类似于黑客。(可以读和修改字节码文件。)
通过反射机制可以操作代码片段。(class文件。)
2、反射机制的相关类在哪个包下?
java.lang.reflect.*;
3、反射机制相关的类有哪些?
java.lang.Class:代表字节码文件。代表这个字节码,代表一个类型。代表整个类。
java.lang.reflect.Method:代表字节码中的方法字节码。代表类中的方法。
java.lang.reflect.Constructor:代表字节码中的构造方法字节码。代表类中的构造方法。
java.lang.reflect.Field:代表字节码中的属性字节码。代表类中的成员变量(静态变量+实例变量)。

java.lang.Class:
public class User{

// Field
int no;// Constructor
public User(){}
public User(int no){
this.no = no;
}// Method
public void setNo(int no){
this.no = no;
}
public int getNo(){
return no;
}

}
要操作一个类的字节码,需要首先获取到这个类的字节码,怎么获取 java.lang.Class 实例?
三种方式:
第一种:Class c = Class.forName(“完整类名带包名”); 例:“java.lang.String”,"java.util.Date"等
第二种:Class c = 对象.getClass();
第三种:Class c = 任何类型.class;

什么是在类路径下?凡是在 src 下的都是类路径下。src 是类的根路径。

回顾反射机制
1、什么是反射机制?反射机制有什么用?
反射机制:可以操作字节码文件。
作用:可以让程序更加灵活。(如:可以任意实例化对象,不修改代码)
2、反射机制相关的类在哪个包下?
java.lang.reflect*;
3、反射机制相关的主要的类?
java.lang.Class
java.lang.reflect.Method;
java.lang.reflect.Constructor;
java.lang.reflect.Field;
4、在 java 中获取 Class 的三种方式?
第一种:Class c = Class.ForName(“完整类名”); 例:“java.lang.String”,"java.util.Date"等
第二种:Class c = 对象.getClass();
第三种:Class c = 任何类型.class;
例:
Class c = int.class;
Class c = String.class;
Class c = Class.ForName(“java.lang.String”);

5、获取了 Class 之后,可以调用无参数构造方法来实例化对象
Class c = Class.forName(“java.util.Date”); // c 代表日期 Date 类型,也可以是其它类型,包括自己建的类
Object obj = c.newInstance(); // 实例化一个 Date 日期类型的对象
一定要注意:newInstance() 底层调用的是该类型的无参数构造方法。如果没有这个无参数构造方法会出现“实例化”异常。

6、如果你只想让“静态代码块”执行的话,你可以怎么做?
Class.forName(“该类的类名”);
这样类就加载,类加载的时候,静态代码块执行!!!
在这里,对该方法的返回值不感兴趣,主要是为了使用“类加载”这个动作。
7、关于路径问题?
String path = Thread.currentThread().getContextClassLoader()
.getResource(“写相对路径,但是这个相对路径从 src 出发开始找”).getPath();
例:
// 必须保证src下有abc文件。
String path = Thread.currentThread().getContextClassLoader().getResource(“abc”).getPath();
// 必须保证src下有a目录,a目录下有ab文件。
String path = Thread.currentThread().getContextClassLoader().getResource(“a/ab”).getPath();

这种方式是为了获取一个文件的绝对路径。(通用方式,不会受到环境移植的影响。)
但是该文件要求放在类路径下,换句话说:也就是放到 src 下面。src 下是类的根路径。直接以流的形式返回:
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("com/bjpowernode/test.properties");

8、IO + Properties,怎么快速绑定属性资源文件?
// 要求:第一个这个文件必须在类路径下。第二个这个文件必须是以 .properties 结尾。
// 路径后面的扩展名不能写
ResourceBundle rb = ResourceBundle.getBundle(com/bjpowernode/test);
String value = rb.getString(key);

严格意义上,src 并不是类路径
能用记事本编辑的都是文本文件。普通文本文件和后缀无关。

java 中怎么区分一个方法?依靠方法名和参数列表。
方法调用要素分析:
要素1:实例对象
要素2:方法名
要素3:实际参数列表
要素4:方法返回值类型

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/727776.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Kali搭建钓鱼网站教程

一、前言 使用kali工具一分钟制作出和目标网站一模一样的钓鱼网站。目标用户使用钓鱼网站登录自己的账号,账号密码将被自动劫持。 二、钓鱼网站的制作过程 1.在虚拟机VMvare中登录kali linux 2.准备一个目标网址 3.在kail中搜索使用工具 4.在弹出的选项中选择第一…

用友 NC saveDoc.ajax 任意文件上传漏洞复现

0x01 产品简介 用友NC是一款企业级ERP软件。作为一种信息化管理工具,用友NC提供了一系列业务管理模块,包括财务会计、采购管理、销售管理、物料管理、生产计划和人力资源管理等,帮助企业实现数字化转型和高效管理。 0x02 漏洞概述 用友 NC saveDoc.ajax接口处存在任意文件…

【JavaEE初阶】 JVM简介

文章目录 🎍前言🍃JVM发展史🚩Sun Classic VM🚩Exact VM🚩HotSpot VM🚩JRockit🚩J9 JVM🚩Taobao JVM(国产研发) 🍀JVM 运行流程⭕总结 &#x1f3…

基于毕奥-萨伐尔定律的交流电机的4极旋转磁场matlab模拟与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于毕奥-萨伐尔定律的交流电机的4极旋转磁场,对比不同定子半径,对比2级旋转磁场。 2.系统仿真结果 3.核心程序与模型 版本:MATLAB2022a…

2024-3-7 python创建二维列表谨防连用两个*,列表的增量赋值(+=或*=)与元组的增量赋值的差异

#1、python创建二维列表谨防连用两个* 要创建1个二维的列表,不要连用两个*号,否则会出现改1个值,其他位置的值跟着变化的问题。 下面两种创建二维列表的方法,要用第一种,不要用第二种 >>> board1 [[_]*3 fo…

代码随想录算法训练营第五十三天 1143.最长公共子序列 、1035.不相交的线、53. 最大子序和

代码随想录算法训练营第五十三天 | 1143.最长公共子序列 、1035.不相交的线、53. 最大子序和 1143.最长公共子序列 题目链接:1143. 最长公共子序列 - 力扣(LeetCode) class Solution {public int longestCommonSubsequence(String text1, …

RK3568平台 USB数据包的收发格式

一.USB硬件拓扑结构 compound device :多个设备组合起来,通过HUB跟Host相连composite device :一个物理设备有多个逻辑设备(multiple interfaces) 在软件开发过程中,我们可以忽略Hub的存在,硬件拓扑图简化如下&#x…

【开源物联网平台】使用MQTT.fx模拟设备接入FastBee物联网平台

​🌈 个人主页:帐篷Li 🔥 系列专栏:FastBee物联网开源项目 💪🏻 专注于简单,易用,可拓展,低成本商业化的AIOT物联网解决方案 目录 一、接入步骤 1.1 创建产品&#xff…

9款世界级垂直领域软件架构师Visio平替作图工具!

1 LucidChart 一个基于HTML5的在线流程图绘制和协作应用平台,用户可以通过它方便快速的实现流程图表的绘制,同时还可以实现与他人进行实时的流程图绘制和修改功能,对需要群组协作功能的团队来说,这点非常方便。 由于LucidChart是…

deeplearning with pytorch (四)

1.Convolutional Neural Network Model torch.Tensor.view — PyTorch 2.2 documentation 在神经网络中,使用激活函数(如ReLU)是为了引入非线性,使得网络能够学习和模拟复杂的函数映射。ReLU(Rectified Linear Unit&…

Python 类的介绍

类class的概念 类是面向对象编程中的一个重要概念,它是一种用于创建对象的模板或蓝图。类定义了对象的属性和行为,并提供了一种封装数据和功能的方式。 类可以看作是对象的抽象,它描述了对象的共同特征和行为。通过类,我们可以创…

如何成为IT产品经理:从入门到精通

如何成为IT产品经理:从入门到精通 在信息爆炸的时代,IT产品经理成为了科技行业的中坚力量。他们不仅要有深厚的技术背景,还需掌握市场动态,对用户需求有着敏锐的洞察力。本文将为您揭示成为IT产品经理的秘诀,带您从入…

布局小技巧

布局小技巧 行内元素、行内块元素,可以被父元素当做文本处理。 即:可以像处理文本对齐一样,去处理:行内、行内块在父元素中的对齐。 例如:text-align、line-height、text-indent等 如何让子元素,在父亲中 …

VM内存结构和垃圾回收机制

引言 在计算机科学中,虚拟机(VM)是一个重要的概念,它允许程序在硬件平台之上运行。虚拟机模拟真实机器的行为,为程序提供了一个独立的运行环境。本文将深入探讨VM的内存结构和垃圾回收机制,以帮助读者更好…

图形系统开发实战课程:进阶篇(上)——10.应用实例:交通路网

图形开发学院|GraphAnyWhere 课程名称:图形系统开发实战课程:进阶篇(上)课程章节:“图形样式”原文地址:https://www.graphanywhere.com/graph/advanced/2-10.html 第十章 应用实例:交通路网 \quad 在前面几…

基于springboot精品在线试题库系统论文

摘 要 使用旧方法对作业管理信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在作业管理信息的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开发的精品在线试题库系…

uniapp调用原生android插件传递回调函数

在混合开发中,uniapp调用android原生的方法,原生方法在处理过程中无法同步给js返回数据,异步执行,那么可以使用传递uniapp回调函数实现 一、编写android的方法 public class MyLibraryPlugin extends UniModule {private UniJS…

python爬虫(2)

继上节 查看数组维数 可以使用数组的ndim属性 代码示例如下: import numpy as np c np.random.randint(1,9,5) print(c.ndim) 结果如下: 当然这些也可以结合前面的各种用法来使用 1、选取数组元素 (1)一维数组的元素…

线程池不香了? 结构化并发才是王道!

我们先定义获取用户信息任务: 再定义获取订单信息任务: 然后再构造线程池并执行任务: 输出结果为: 看上去一切都刚刚好,但是,如果获取订单信息时出错了,此时会是什么现象呢?修改获取…

外包干了一周,技术明显倒退。。。。。

先说一下自己的情况,本科生,2019年我通过校招踏入了南京一家软件公司,开始了我的职业生涯。那时的我,满怀热血和憧憬,期待着在这个行业中闯出一片天地。然而,随着时间的推移,我发现自己逐渐陷入…