反射-----java

news/2024/5/19 6:59:17 标签: 反射, java, class,
class="baidu_pl">
class="article_content clearfix">
class="markdown_views prism-atom-one-light">

class="tags" href="/tags/FanShe.html" title=反射>反射

1. 的加载

再用的时候必须先加载
而且加载先加载class文件
在这里插入图片描述
静态是随着的加载而加载

2.初始化时机

在这里插入图片描述
先加载父 因为害怕子用父

3.加载器

在这里插入图片描述
在这里插入图片描述

4.class="tags" href="/tags/FanShe.html" title=反射>反射

在这里插入图片描述
class="tags" href="/tags/FanShe.html" title=反射>反射就通过class文件对象,去使用该文件的成员变量,构造方法,成员方法
在这里插入图片描述
class="tags" href="/tags/FanShe.html" title=反射>反射就是通过访问点class文件来调用的成员变量 成员方法 和构造方法
要像这样使用即必须得到class文件对象
其实就是得到class的兑现

  • class

    • 成员变量 Field
    • 构造方法 Constructor
    • 成员方法 Method
  • 获取class文件对象的方式

    • A。Object 的getClass()方法

    • B。数据型的静态属性

    • C。Class中的静态方法

            public static Class forName(string classname)
                                          必须是全路径
      
  • 一般怎么选:
    • A,自己玩  任选一种  第二种较方便
      
    • B.开发  第三种
      
    •      因为第三种是一个字符传 而不是一个具体     的
    这样我们就可以吧这样的字符串配置到 配置文件
    在这里插入图片描述

5. 获取的有关数据

A. 获取构造

class="prism language-class="tags" href="/tags/JAVA.html" title=java>java"> Aclass="token punctuation">.class="token number">1. getConstructors
 class="token keyword">public Constructorclass="token operator"><class="token operator">?class="token operator">>class="token punctuation">[class="token punctuation">] class="token function">getConstructorsclass="token punctuation">(class="token punctuation">)返回公共构造

A.2.getDeclaredConstructor

class="prism language-class="tags" href="/tags/JAVA.html" title=java>java"> class="token keyword">public Constructorclass="token generics function">class="token punctuation"><Tclass="token punctuation">>
		       class="token function">getDeclaredConstructorclass="token punctuation">(Classclass="token operator"><class="token operator">?class="token operator">>class="token punctuation">.class="token punctuation">.class="token punctuation">. parameterTypesclass="token punctuation">)  
		               Class 对象所表示的或接口的指定构造方法

A.3.获取单个构造
①.getConstructor

class="prism language-class="tags" href="/tags/JAVA.html" title=java>java">class="token keyword">public Constructorclass="token generics function">class="token punctuation"><Tclass="token punctuation">> getConstructor ()可变参数    
返回一个 Constructor 对象,它反映此 Class 对象所表示的的指定公共构造方法。

newInstance(Object… initargs)
使用此 Constructor 对象表示的构造方法来创建该构造方法的声明的新实例,并用指定的初始化参数初始化该实例。

class="prism language-class="tags" href="/tags/JAVA.html" title=java>java">Constructor conclass="token operator">=cclass="token punctuation">.class="token function">getConstructorclass="token punctuation">(Stringclass="token punctuation">.class="token keyword">classclass="token punctuation">,Stringclass="token punctuation">.class="token keyword">classclass="token punctuation">,Stringclass="token punctuation">.class="token keyword">classclass="token punctuation">)class="token punctuation">;  获取

相应的构造参数
创建对象

class="prism language-class="tags" href="/tags/JAVA.html" title=java>java">Object objclass="token operator">=conclass="token punctuation">.class="token function">newInstanceclass="token punctuation">(class="token string">"tjk"class="token punctuation">,class="token string">"男"class="token punctuation">)class="token punctuation">;  
   class="token comment">//==person p1=new person("tjk","nan");

② newInstance(Object… initargs)
使用此 Constructor 对象表示的构造方法来创建该构造方法的声明的新实例,并用指定的初始化参数初始化该实例 返回一个object对象
在这里插入图片描述
③.获取私有构造函数
在这里插入图片描述
Con.setAccessible(true) 指定私有构造方法访问权为指定的boolean型 使得class="tags" href="/tags/JAVA.html" title=java>java暂时取消访问检查

B.获取成员变量并使用
B.1 Public型的成员变量

在这里插入图片描述
B.2 所有的成员变量
在这里插入图片描述
B.3给public 型的成员变量赋值
在这里插入图片描述
B.4给私有成员变量赋值
在这里插入图片描述
注意:要给field对象改变其暂时访问权限

C.获取成员方法
C.1 获取父和子所有的方法
在这里插入图片描述
C.2 获取自己的成员方法
在这里插入图片描述
C.3 获取单个的方法
在这里插入图片描述

class="prism language-class="tags" href="/tags/JAVA.html" title=java>java">Class class="token class-name">c1class="token operator">=Classclass="token punctuation">.class="token function">forNameclass="token punctuation">(class="token string">"com.itcast1.cn.person"class="token punctuation">)class="token punctuation">;
Constructor conclass="token operator">= c1class="token punctuation">.class="token function">getDeclaredConstructorclass="token punctuation">(class="token punctuation">)class="token punctuation">;
Object objclass="token operator">=conclass="token punctuation">.class="token function">newInstanceclass="token punctuation">(class="token punctuation">)class="token punctuation">;
Method mhclass="token operator">=c1class="token punctuation">.class="token function">getMethodclass="token punctuation">(class="token string">"show"class="token punctuation">)

获取单个的带参的成员方法
在这里插入图片描述


http://www.niftyadmin.cn/n/1712055.html

相关文章

JVM详解----java

一. 什么是JVM 1.内容&#xff1a; Java程序的运行环境&#xff08;Java二进制字节码的运行环境&#xff09; 好处&#xff1a; a. 一次编写&#xff0c;到处运行 b. 自动内存管理&#xff0c;垃圾回收功能 c. 数组下标越界检查 d. 多态 比较&#xff1a; Jvm隔绝与操作系统的…

简述TCP/IP 协议栈

TCP/IP 协议栈是一系列网络协议的总和&#xff0c;是构成网络通信的核心骨架&#xff0c;它定义了电子设备如何连入因特网&#xff0c;以及数据如何在它们之间进行传输。TCP/IP 协议采用4层结构&#xff0c;分别是应用层、传输层、网络层和链路层&#xff0c;每一层都呼叫它的下…

经典查找算法

查找是在大量的信息中寻找一个特定的信息元素&#xff0c;在计算机应用中&#xff0c;查找是常用的基本运算&#xff0c;例如编译程序中符号表的查找。本文简单概括性的介绍了常见的七种查找算法&#xff0c;说是七种&#xff0c;其实二分查找、插值查找以及斐波那契查找都可以…

HOT42-将有序数组转换为二叉搜索树

leetcode原题链接&#xff1a;将有序数组转换为二叉搜索树 题目描述 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二…

枚举类详解----java

枚举类 1. 枚举概述 枚举是指将变量-- – 列出来&#xff0c; 变量得值只限于列举出来的值得范围内是有限个实类&#xff08;了解即可&#xff09; 自己定义的&#xff1a; 因为要直接获取对象 而且不可更改 所以必须是final 而且用了static,相当于是调用了静态方法 通过构造…

JDK8 的新特性---java

1. 数字中间可以加_ 2. try语句 3. 细节 a. 接口中可以有自己的默认方法 Default 修饰 b. 接口中还可以有静态的方法

图的广度优先遍历与深度优先遍历

介绍图的关键的搜索算法之前&#xff0c;先简单介绍下图论中图的概念&#xff0c;矩阵理论中的邻接矩阵和邻接表。 1 基本概念 1.1 图 1.1.1 定义 定义&#xff1a;图(graph)是由一些点(vertex)和这些点之间的连线(edge)所组成的&#xff1b;其中&#xff0c;点通常被成为&…

回溯算法解析

1 回溯法定义 采用试错的思想&#xff0c;它尝试分步的去解决一个问题。在分步解决问题的过程中&#xff0c;当它通过尝试发现现有的分步答案不能得到有效的正确的解答的时候&#xff0c;它将取消上一步甚至是上几步的计算&#xff0c;再通过其它的可能的分步解答再次尝试寻找…