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

news2024/9/21 5:41:20

前言

        最近打算手写一个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 {
    @Override
    public User getUserById(Integer id) {
        return null;
    }

    @Override
    public Integer insertUserById(User user) {
        return null;
    }

    @Override
    public 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://www.coloradmin.cn/o/1933322.html

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

相关文章

图神经网络实战(17)——深度图生成模型

图神经网络实战&#xff08;17&#xff09;——深度图生成模型 0. 前言1. 变分图自编码器2. 自回归模型3. 生成对抗网络小结系列链接 0. 前言 我们已经学习了经典的图生成算法&#xff0c;虽然它们能够完成图生成任务&#xff0c;但也存在一些问题&#xff0c;促使基于图神经网…

pytorch学习(四)绘制loss和correct曲线

这一次学习的时候静态绘制loss和correct曲线&#xff0c;也就是在模型训练完成后&#xff0c;对统计的数据进行绘制。 以minist数据训练为例子 import torch from torch import nn from torch.utils.data import DataLoader from torchvision import datasets from torchvisi…

GESP CCF C++ 三级认证真题 2024年6月

第 1 题 小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证考试的第1级&#xff0c;那他可以选择的认证语言有&#xff08;&#xff09;种。 A. 1 B. 2 C. 3 D. 4 第 2 题 下面流程图在yr输入2024时&#xff0c;可以判定yr代表闰年&#xff0c;并输出 2月是29天 &#x…

python-字符金字塔(赛氪OJ)

[题目描述] 请打印输出一个字符金字塔&#xff0c;字符金字塔的特征请参考样例。输入格式&#xff1a; 输入一个字母&#xff0c;保证是大写。输出格式&#xff1a; 输出一个字母金字塔&#xff0c;输出样式见样例。样例输入 C样例输出 A ABA …

【前端8】element ui常见页面布局:注意事项

【前端8】element ui常见页面布局&#xff1a;注意事项 写在最前面遇到的问题Element UI 常见页面布局&#xff1a;注意事项1. 了解基本布局组件常用的菜单1多一个下角 常用的菜单2 2. 栅格系统的使用3. 响应式布局4. Flex 布局的应用5. 避免滥用嵌套6. 处理边距和填充 小结 &a…

基于STC89C51单片机的烟雾报警器设计(煤气火灾检测报警)(含文档、源码与proteus仿真,以及系统详细介绍)

本篇文章论述的是基于STC89C51单片机的烟雾报警器设计的详情介绍&#xff0c;如果对您有帮助的话&#xff0c;还请关注一下哦&#xff0c;如果有资源方面的需要可以联系我。 目录 摘要 原理图 实物图 仿真图 元件清单 代码 系统论文 资源下载 摘要 随着现代家庭用火、…

TikTok内嵌跨境商城全开源_搭建教程/前端uniapp+后端源码

多语言跨境电商外贸商城 TikTok内嵌商城&#xff0c;商家入驻一键铺货一键提货 全开源完美运营&#xff0c;接在tiktok里面的商城内嵌&#xff0c;也可单独分开出来当独立站运营 二十一种语言&#xff0c;可以做很多国家的市场&#xff0c;支持商家入驻&#xff0c;多店铺等等…

服务器IP和电脑IP有什么不同

服务器IP和电脑IP有什么不同&#xff1f;在当今的信息化时代&#xff0c;IP地址作为网络世界中不可或缺的元素&#xff0c;扮演着举足轻重的角色。然而&#xff0c;对于非专业人士来说&#xff0c;服务器IP和电脑IP之间的区别往往模糊不清。本文旨在深入探讨这两者之间的不同&a…

若依前端和后端时间相差8小时

原因基类未设置时区 实体类继承 BaseEntity 加上timezone"GMT8" /** 创建时间 */ JsonFormat(pattern "yyyy-MM-dd HH:mm:ss" , timezone"GMT8") private Date createTime; 解决

golang程序性能提升改进篇之文件的读写---第一篇

背景&#xff1a;接手的项目是golang开发的&#xff08;本人初次接触golang&#xff09;经常出现oom。这个程序是计算和io密集型&#xff0c;调用流量属于明显有波峰波谷&#xff0c;但是因为各种原因&#xff0c;当前无法快速通过serverless或者动态在高峰时段调整资源&#x…

MViTv2:Facebook出品,进一步优化的多尺度ViT | CVPR 2022

论文将Multiscale Vision Transformers (MViTv2) 作为图像和视频分类以及对象检测的统一架构进行研究&#xff0c;结合分解的相对位置编码和残差池化连接提出了MViT的改进版本 来源&#xff1a;晓飞的算法工程笔记 公众号 论文: MViTv2: Improved Multiscale Vision Transforme…

Fiddler抓包过滤host及js、css等地址

1、如上图所示 在Filter页面中勾选Hide if URL contains&#xff1b;输入框输入 REGEX:\.(js|css|png|google|favicon\?.*) 隐藏掉包含js、css、png、google等的地址&#xff1a; Hide if URL contains: REGEX:\.(js|css|png|google|favicon\?.*) 2、使Filters设置生效 A…

微软新版WSL 2.3.11子系统带来“数百个新内核模块“和新功能

微软今天发布了新版的 Windows Subsystem for Linux(WSL)。与当前的 WSL 2.2.4 稳定版相比&#xff0c;WSL 2.3.11 具有许多特性&#xff1a;它从旧版的 Linux 5.15 LTS 内核转到了 Linux 6.6LTS内核。今天的发布说明指出&#xff0c;WSL 2.3.11 基于 Linux 6.6.36.3&#xff0…

【C++刷题】[UVA 489]Hangman Judge 刽子手游戏

题目描述 题目解析 这一题看似简单其实有很多坑&#xff0c;我也被卡了好久才ac。首先题目的意思是&#xff0c;输入回合数&#xff0c;一个答案单词&#xff0c;和一个猜测单词&#xff0c;如果猜测的单词里存在答案单词里的所有字母则判定为赢&#xff0c;如果有一个字母是答…

力扣622.设计循环队列

力扣622.设计循环队列 通过数组索引构建一个虚拟的首尾相连的环当front rear时 队列为空当front rear 1时 队列为满 (最后一位不存) class MyCircularQueue {int front;int rear;int capacity;vector<int> elements;public:MyCircularQueue(int k) {//最后一位不存…

基于python的三次样条插值原理及代码

1 三次样条插值 1.1 三次样条插值的基本概念 三次样条插值是通过求解三弯矩方程组&#xff08;即三次样条方程组的特殊形式&#xff09;来得出曲线函数组的过程。在实际计算中&#xff0c;还需要引入边界条件来完成计算。样条插值的名称来源于早期工程师制图时使用的细长木条&…

【机器学习】--过采样原理及代码详解

过采样&#xff08;Oversampling&#xff09;是一个在多个领域都有应用的技术&#xff0c;其具体含义和应用方法会根据领域的不同而有所差异。以下是对过采样技术的详细解析&#xff0c;主要从机器学习和信号处理两个领域进行阐述。 一、机器学习中的过采样 在机器学习中&…

未来的社交标杆:如何通过AI让Facebook更加智能化?

在当今信息爆炸的时代&#xff0c;社交媒体平台的智能化已成为提高用户体验和互动质量的关键因素。Facebook&#xff0c;作为全球最大的社交平台之一&#xff0c;通过人工智能&#xff08;AI&#xff09;的广泛应用&#xff0c;正不断推进其智能化进程。本文将探讨Facebook如何…

Qt日志库QsLog使用教程

前言 最近项目中需要用到日志库。上一次项目中用到了log4qt库&#xff0c;这个库有个麻烦的点是要配置config文件&#xff0c;所以这次切换到了QsLog。用了后这个库的感受是&#xff0c;比较轻量级&#xff0c;嘎嘎好用&#xff0c;推荐一波。 下载QsLog库 https://github.c…

CSS技巧专栏:一日一例 7 - 纯CSS实现炫光边框按钮特效

CSS技巧专栏&#xff1a;一日一例 7 - 纯CSS实现炫光边框按钮特效 本例效果图 案例分析 相信你可能已经在网络见过类似这样的流光的按钮&#xff0c;在羡慕别人做的按钮这么酷的时候&#xff0c;你有没有扒一下它的源代码的冲动&#xff1f;或者你当时有点冲动&#xff0c;却…