Java反射机制基础知识赏析、接口、实现类、方法

前言

        最近打算手写一个RPC,但奈何自己Java基础知识中的反射就很欠缺,第一章就看不太懂了,特地编写了几个小Demo验证一下Java中关于反射的基础知识。

目录组织结构

代码编写

// TestService接口
package reflect.testServices;import main.version1.v1.common.pojo.User;public interface TestService {User getUserById(Integer id);Integer insertUserById(User user);
}// TestService1接口
package reflect.testServices;import main.version1.v1.common.pojo.User;public interface TestService1 {User getUserByName(String name);
}// TestServiceImpl实现类
package reflect.testServices.impl;import main.version1.v1.common.pojo.User;
import reflect.testServices.TestService;
import reflect.testServices.TestService1;public class TestServiceImpl implements TestService, TestService1 {@Overridepublic User getUserById(Integer id) {return null;}@Overridepublic Integer insertUserById(User user) {return null;}@Overridepublic User getUserByName(String name) {return null;}
}// 测试Demo编写
package reflect;import reflect.testServices.TestService;
import reflect.testServices.impl.TestServiceImpl;import java.lang.reflect.Method;public class Demo01 {public static void main(String[] args) throws NoSuchMethodException {System.out.println("=====");// 获取方法名Method getUserById = TestService.class.getMethod("getUserById", Integer.class);System.out.println(getUserById);// 获取方法对应的接口名System.out.println(getUserById.getDeclaringClass().getName());System.out.println("======");TestService testService = new TestServiceImpl();// 获取实现的接口字节码集合Class<?>[] interfaces = testService.getClass().getInterfaces();String name = testService.getClass().getName();System.out.println(name);// 遍历接口字节码集合for (Class<?> interfacea : interfaces) {// 获取接口名称System.out.println(interfacea.getName());// 遍历各个接口中定义的所有方法Method[] declaredMethods = interfacea.getDeclaredMethods();for (Method declaredMethod : declaredMethods) {System.out.println("innnnnnnn" + declaredMethod);}}System.out.println("=========");// 获取实现类中定义的所有方法Method[] methods = testService.getClass().getDeclaredMethods();for (Method method : methods) {System.out.println(method);}}
}

结果展示

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

基于asp.net 在线订票管理系统 设计与实现

博主介绍&#xff1a;专注于Java .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设&#xff0c;从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的可以…

Vue封装文件上传组件(支持图片、PDF、Excel、word预览下载)

一、准备工作 安装预览依赖包&#xff1a;exceljs、mammoth、vue-pdf 二、封装组件 文件上传组件 fileUploadPro.vue。默认预览、下载是true,可通过isPreView、isDownLoad控制 <template><div style"display: flex"><el-uploadmultipleaction&qu…

使用百度语音技术实现文字转语音

使用百度语音技术实现文字转语音 SpringBootVue前后端分离项目 调用api接口需要使用AK和SK生成AccessToken,生成getAccessToken的接口有跨域限制,所以统一的由后端处理了 部分参数在控制台->语音技术->在线调试里面能找到 Controller RestController RequestMapping(&q…

【Spring Cloud】掌握Gateway核心技术,实现高效路由与转发

目录 前言示例创建一个服务提供者创建网关 创建common子项目 前言 Spring Cloud Gateway 是一个基于 Spring Boot 的非阻塞 API 网关服务&#xff0c;它提供了动态路由、请求断言、过滤器等功能。 以下是关于 Spring Cloud Gateway 的示例&#xff1a; 示例 创建一个服务提…

C#实现数据采集系统-实现功能介绍

系统介绍 我们这里主要使用C#( .Net 6)来实现一个数据采集系统&#xff0c;从0到1搭建数据采集系统&#xff0c;从系统分析&#xff0c;功能拆解&#xff0c;到一一实现 数据采集 数据采集是企业信息化和数字化转型过程中的关键环节&#xff0c;它涉及到从生产设备、传感器…

近段时间led灯性价比最高有哪几款?五款led灯性价比最高推荐

近段时间led灯性价比最高有哪几款&#xff1f;作为学生&#xff0c;在学校学习的时候会接触到电子产品&#xff0c;在夜晚回到家&#xff0c;还得接着继续读写。长时间的用眼过度&#xff0c;会导致视力下降&#xff0c;严重的话还会出现眼部疾病。所以&#xff0c;需要一个护眼…

内部函数和外部函数(例子为C语言)

​​​​ 怎么来的&#xff1f; 函数本质上是全局的&#xff0c;因为定义一个函数的目的就是这个函数与其他函数之间相互调用&#xff0c;如果不声明的话&#xff0c;一个函数既可以被本文件中的其他函数调用&#xff0c;也可以被其他文件中的函数调用。但是可以指定某些函数…

第十课:telnet(远程登入)

如何远程管理网络设备&#xff1f; 只要保证PC和路由器的ip是互通的&#xff0c;那么PC就可以远程管理路由器&#xff08;用telnet技术管理&#xff09;。 我们搭建一个下面这样的简单的拓扑图进行介绍 首先我们点击云&#xff0c;把云打开&#xff0c;点击增加 我们绑定vmn…

Streaming Video Recorder 6 视频录制 视频格式转换

Streaming Video Recorder 6 是一款功能强大的录屏和视频下载软件。它具有以下特点和功能&#xff1a; 录屏功能&#xff1a;可以录制电脑屏幕上的各种内容&#xff0c;例如操作过程、在线课程、游戏等。 视频嗅探与下载&#xff1a;能够通过粘贴链接地址&#xff0c;自动检测并…

FGF18:骨关节炎治疗靶标

成纤维细胞生长因子18&#xff08;FGF18&#xff09;属于FGF8亚家族成员&#xff0c;在细胞增殖、细胞分化和细胞迁移的调节中起重要作用&#xff0c;是正常骨化和骨骼发育所需&#xff0c;同时刺激肝脏和肠道增殖。 &#xff08;数据来源AlphaFold&#xff09; FGF18由207个氨…

Ubuntu安装virtualbox(win10)

virtualbox下载安装 1、下载virtualbox 下载路径&#xff1a;Linux_Downloads – Oracle VM VirtualBox 根据自己的Ubuntu版本选择对应的安装包下载 2、安装virtualbox 到下载路径&#xff08;一般为~/Download&#xff09;打开终端输入命令 sudo dpkg -i xxx.deb 继续执…

前瞻断言与后瞻断言:JavaScript 正则表达式的秘密武器

JavaScript 中的前瞻断言&#xff08;lookahead&#xff09;和后瞻断言&#xff08;lookbehind&#xff09;相信用过的小伙伴就知道它的威力了&#xff0c;在一些特定的需求场景下&#xff0c;可以做到四两拨千斤的作用&#xff0c;今天让我们来盘点一下在 JavaScript 正则表达…

【spring boot】初学者项目快速练手

一小时带你从0到1实现一个SpringBoot项目开发_哔哩哔哩_bilibili 一、基础知识 1.注解 二、简介 三、项目结构 1.API/Controller层 业务控制层&#xff0c;控制业务层Service&#xff0c;并把数据返回给移动端和前端&#xff0c;直接转发Service的业务处理结果&#xff0c;…

Lora模型训练的参数-学习笔记

任何一个lora都会有三重属性&#xff0c;易调用性、泛化性和还原性&#xff0c;任何一个lora只能完美满足其中的两项&#xff1b; 易调用性&#xff1a;在已调用lora后&#xff0c;还需要多少提示词才能让该lora完全生效&#xff1b; 泛化性&#xff1a;能不能还原lora训练素…

新电脑怎么装系统?一文带你轻松搞定

对于刚刚购置的新电脑&#xff0c;安装操作系统是必不可少的一步。一个高效、稳定的操作系统能让您的新电脑发挥出最佳性能。本文将介绍新电脑怎么装系统的3种方法&#xff0c;每种方法都提供了详细的步骤说明&#xff0c;帮助您顺利完成系统安装。 方法1&#xff1a;通过网络安…

Java中锁的全面详解(深刻理解各种锁)

一.Monitor 1. Java对象头 以32位虚拟机位例 对于普通对象,其对象头的存储结构为 总长为64位,也就是8个字节, 存在两个部分 Kclass Word: 其实也就是表示我们这个对象属于什么类型,也就是哪个类的对象.而对于Mark Word.查看一下它的结构存储 64位虚拟机中 而对于数组对象,我…

基于python旅游景点满意度分析设计与实现

1.1研究背景与意义 1.1.1研究背景 随着旅游业的快速发展&#xff0c;满意度分析成为评估旅游景点质量和提升游客体验的重要手段。海口市作为中国的旅游城市之一&#xff0c;其旅游景点吸引了大量游客。然而&#xff0c;如何科学评估和提升海口市旅游景点的满意度&#xff0c;…

百度网盘Android一二面凉经(2024)

百度网盘Android一二面凉经(2024) 笔者作为一名双非二本毕业7年老Android, 最近面试了不少公司, 目前已告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是《百度网盘Android一二面凉经(2024)》。 面试职位: 网盘主端研发组_Android高级研…

芯课堂 | SWM34S系列驱动TFT屏走线布局设计参考

​在TFT屏驱电路设计中&#xff0c;好的PCB板布局走线可以让调试更轻松&#xff0c;让EMC测试更容易通过&#xff0c;关于34S的PCB板设计应注意以下几点&#xff1a; 关于布局 在布局中需要尽量靠近MCU的元器件有&#xff1a;晶振电路所有元器件、复位电路RC、CAP滤波电容以及…

【AI大模型Agent探索】Qwen-Agent:基于Qwen的LLM应用开发框架

系列篇章&#x1f4a5; No.文章1【Qwen部署实战】探索Qwen-7B-Chat&#xff1a;阿里云大型语言模型的对话实践2【Qwen2部署实战】Qwen2初体验&#xff1a;用Transformers打造智能聊天机器人3【Qwen2部署实战】探索Qwen2-7B&#xff1a;通过FastApi框架实现API的部署与调用4【Q…