注解反射之通过Class对象来操作对象的属性和方法

news/2025/2/7 23:06:02/文章来源:https://www.cnblogs.com/loubin/p/18703463

代码如下

package com.loubin;import java.lang.annotation.*;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;public class Main {public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {User user = new User("张三", 18);Class c = user.getClass();System.out.println("获取名字---------------------------");Field field = c.getDeclaredField("name");String name = (String) field.get(user);System.out.println(name);System.out.println("修改名字----------------------------");field.set(user, "李四");String name2 = user.getName();System.out.println(name2);System.out.println("调用方法——---------------------------");Method method = c.getDeclaredMethod("shout", String.class);method.invoke(user, "李白");
//        Class c = User.class;
//        String name = c.getName();
//        System.out.println(name);
//        System.out.println("获取所有属性-------------------------------");
//        Field[] fields = c.getDeclaredFields();
//        for (Field field : fields) {
//            System.out.println(field.getName());
//        }
//        System.out.println("获取指定属性-----------------------------------");
//        Field field = c.getDeclaredField("name");
//        System.out.println(field.getName());
//        System.out.println("获取所有方法----------------------------------");
//        Method[] methods = c.getDeclaredMethods();
//        for (Method method : methods) {
//            System.out.println(method.getName());
//        }
//        System.out.println("获取指定方法----------------------------------");
//        Method method = c.getDeclaredMethod("getName");
//        System.out.println(method.getName());
//        System.out.println("获取无参构造器------------------------------------");
//        Constructor constructor = c.getDeclaredConstructor();
//        System.out.println(constructor.getName());
//        System.out.println("获取有参构造器-----------------------------------");
//        Constructor constructor1 = c.getDeclaredConstructor(String.class, int.class);
    }
}class User{String  name;int age;public User() {}public User(String name, int age) {this.name = name;this.age = age;}public void shout(String name){System.out.println("是谁叫了一下" + name);}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}}

测试结果如下

 

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

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

相关文章

百度网盘的闲时下载卡入口

https://baijiahao.baidu.com/s?id=1820111080013395787&wfr=spider&for=pc 百度网盘的闲时下载卡入口首先,需要明确是,闲时下载卡的使用时间是01:00-09:00。闲时下载卡的使用时间是01:00-09:00其次,是电脑端的入口。1.在下载界面点击“立即提速”点击箭头指示…

2025年夸克网盘1TB免费空间领取教程,轻松扩容你的网盘

今天为大家带来的是2025年夸克网盘1TB免费空间领取教程,轻松扩容你的网盘。大家好呀!这里是专注为大家挖掘各种超值福利的小助手!你是不是也有过这样的烦恼——网盘存储空间不够用,电影、照片、文件放得满满的,完全没有余地?今天我要给大家带来一个超实用的福利,夸克网盘…

Duplicate Cleaner : 这款神器一键干掉重复文件

在如今这个数字时代,我们的电脑里存储着海量的文件。随着时间的推移,重复文件也越来越多,不仅占用宝贵的磁盘空间,还会让文件管理变得一团糟。 今天,就给大家介绍一款能轻松解决这一难题的神器 ——Duplicate Cleaner。Duplicate Cleaner 有普通版和功能更强大的 Pro 版。…

Doggo:一款友好的命令行DNS查询工具

一、基本概述 Doggo是由Karan Sharma使用Go语言开发的现代命令行DNS客户端工具,旨在以简洁、直观的方式输出DNS查询结果。它类似于传统的dig命令,但提供了更为现代化和易读的输出格式。 https://github.com/mr-karan/doggo二、主要特点 1、支持多种协议: Doggo不仅支持传统的…

uniapp 移动端(ios)uview2.0 u-input 插槽问题

这个插槽太奇怪了,非得加上对于的属性才能使用。<u-input class="u-input" prefixIcon="search" suffix-icon="search" placeholder="请输入验证码" type="text" border="surround"color="#fffffff0&quo…

DeepSeek-R1 技术全景解析:从原理到实践的“炼金术配方” ——附多阶段训练流程图与核心误区澄清

字数:约3200字|预计阅读时间:8分钟(调试着R1的API接口,看着控制台瀑布般流淌的思维链日志)此刻我仿佛看到AlphaGo的棋谱在代码世界重生——这是属于推理模型的AlphaZero时刻。 DeepSeek 发布的 V3、R1-Zero、R1 三大模型,代表了一条从通用基座到专用推理的完整技术路径。…

注解反射之获得Class对象

获得Class对象是实现反射的基础,获得Class对象主要有三种方式 下面是具体实例package com.loubin;import java.lang.annotation.*;public class Main {public static void main(String[] args) throws ClassNotFoundException {Class c = User.class;User user = new User();…

注解反射之获得Class对象介绍

啥是Class对象 专业的详细的科学的规范的解释百度就可以获得,这里写能让自己直观理解的介绍吧。当我们运行程序时,系统会将类加载到内存,同时,会给每个类分配一个Class的对象,这个Class的对象拥有关于这个类的一切描述,就好像人的名片一样。每一个类对应一个唯一的Class对…

java面试心得体会

1.背景 大家有没有感觉到现在就算背诵了很多面试八股文,也刷了B站上很多的面试视频,绝大部分的面试题也基本上都能回答上,但是找工作却越来越难了,是因为自己没有学好么,当然不是很多人认为是经济不好,招聘的单位少,其实我个人觉得也不是最主要的原因估计是学习java编程的人太多…

注解反射之自定义注解

自定义注解主要是要掌握四个元注解@Target, @Retention,@Documented,@Inherited,他们的意思分别如下 下面是一个具体的例子,注意注释定义中的 String name()并不是定义一个name方法,而是定义一个name属性,该属性的类型是Stringpackage com.loubin;import java.lang.ann…

【CTF笔记】文件上传漏洞

一、后门代码 1、一句话后门 <?php @eval($_get[cmd]); ?> <?php @eval($_request[cmd]);?> <script language="php">@eval($_post[cmd]);</script>注意,在PHP中配置 short_open_tag=on 时,图片中不能含有 <? ,有会影响PHP代码的…

​​2025年中非人工智能产业发展论坛征文来了!网络空间安全专业论文投稿建议(附文件全文)

2025年中非人工智能产业发展论坛征文来了!网络空间安全专业论文投稿建议(附文件全文)2025年中非人工智能产业发展论坛由广西产学研科学研究院、天津科学技术出版社、马里共和国驻华大使馆等单位联合举办,南宁市人工智能学会、IRNet国际学术交流中心承办,拟于2025年9月召开…