iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java如何获取接口所有的实现类
  • 938
分享到

Java如何获取接口所有的实现类

Java接口Java实现类Java获取接口实现类 2023-01-09 12:01:30 938人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录Java获取接口所有的实现类反射获取接口的所有实现类总结Java获取接口所有的实现类 最近因业务需求,要实现nodeRed服务后端化,为使各个节点的解析进行插件化(NodeRed

Java获取接口所有的实现类

最近因业务需求,要实现nodeRed服务后端化,为使各个节点的解析进行插件化(NodeRed各个节点也是插件化,安装插件即可使用) ,后端不得不动态加载解析NodeRed节点JSON,用一个接口来统一管理。

import cn.hutool.core.util.ClassUtil;
import java.util.*;
 

public class NodeRedParseUtil {
    
    public static void main(String[] args) throws IllegalAccessException, InstantiationException {
        //获取所有的模型实现类
        Set<Class<?>> classes = ClassUtil.scanPackageBySuper("com.ciih.nodred.plugins", NodeRedModel.class);
        Map<String, NodeRedModel> map = new HashMap<>(classes.size());
        for (Class<?> aClass : classes) {
            //实例化
            Object o = aClass.newInstance();
            System.out.println();
            if (o instanceof NodeRedModel) {
                NodeRedModel nodeRedModel = (NodeRedModel) o;
                map.put(nodeRedModel.getType(), nodeRedModel);
            }
        }
    }
 
}

反射获取接口的所有实现类

添加依赖

implementation 'org.reflections:reflections:0.9.12'

接口

package com.example.myapplication.people;

public interface IPeople {
  String say();
}

实现类

package com.example.myapplication.people;

public class Student implements IPeople{

  @Override
  public String say() {
    return "I am a student";
  }
}
package com.example.myapplication.people;

public class Teacher implements IPeople{

  @Override
  public String say() {
    return "I am a teacher";
  }
}

工具

package com.example.myapplication;

import Android.net.IpPrefix;
import com.example.myapplication.people.IPeople;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.reflections.Reflections;

public class Utils {
  public static Map<String,Class> getAllIPeopleImpl(){
    Reflections reflection=new Reflections("com.example.myapplication.people");
    Map<String,Class> map=new HashMap<>();
    Set<Class<? extends IPeople>> set=reflection.getSubTypesOf(IPeople.class);
    for(Class c:set){
      map.put(c.getSimpleName(),c);
    }
    return map;
  }
}

测试

package com.example.myapplication;

import com.example.myapplication.people.IPeople;
import java.util.Map;
import org.junit.Test;

import static org.junit.Assert.*;


public class ExampleUnitTest {
  
  @Test
  public void test() {
    Map<String, Class> map = Utils.getAllIPeopleImpl();
    try {
      for (String str : map.keySet()) {
        Object people = map.get(str).newInstance();
        if(people instanceof IPeople){
          System.out.println(str);
          System.out.println(((IPeople) people).say());
        }
      }
    } catch (IllegalAccessException | InstantiationException e) {
      e.printStackTrace();
    }
  }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: Java如何获取接口所有的实现类

本文链接: https://www.lsjlt.com/news/177130.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java如何获取接口所有的实现类
    目录Java获取接口所有的实现类反射获取接口的所有实现类总结Java获取接口所有的实现类 最近因业务需求,要实现NodeRed服务后端化,为使各个节点的解析进行插件化(NodeRed...
    99+
    2023-01-09
    Java接口 Java实现类 Java获取接口实现类
  • springboot如何获取接口下所有实现类
    目录springboot获取接口下所有实现类springboot动态调用实现类1、添加接口2、创建实现类3、获取实现类的相关接口 springboot获取接口下所有实现类 ...
    99+
    2022-11-13
  • Springboot项目如何获取所有的接口
    目录Springboot项目获取所有接口获取项目下所有http接口的信息一、接口信息类二、单元测试Springboot项目获取所有接口 @Autowired private We...
    99+
    2022-11-12
  • Java SpringBoot 获取接口实现类汇总
    目录前言一、获取接口的所有实现类1、枚举2、业务接口2.1 实现类3、ApplicationContextAware接口实现类4、获取到所有实现类使用前言 有时候,根据业务逻辑的需求...
    99+
    2022-11-13
  • 使用SpringBoot获取所有接口的路由
    目录SpringBoot获取所有接口的路由Springboot部分路由生效问题记录SpringBoot获取所有接口的路由 @Autowired WebApplicatio...
    99+
    2022-11-12
  • java怎么获取实体类所有属性
    在Java中,可以使用反射机制来获取实体类的所有属性。下面是一种常见的方法:1. 使用`Class`类的`getDeclaredFi...
    99+
    2023-09-20
    java
  • Java如何实现获取内网的所有IP地址
    本篇内容主要讲解“Java如何实现获取内网的所有IP地址”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java如何实现获取内网的所有IP地址”吧!题目描述在进行网络编程时,有时需要对局域网的所有...
    99+
    2023-07-02
  • java如何获取list所有值
    在Java中,可以使用for循环遍历List来获取所有值。具体步骤如下:1. 定义一个List对象,例如:```javaList l...
    99+
    2023-09-20
    java
  • Java实现获取内网的所有IP地址
    目录题目描述代码详解效果展示题目描述 在进行网络编程时,有时需要对局域网的所有主机进行遍历,为此需要获得内网的所以IP地址 题目实现:获得内网的所有IP地址的小应用。 解题思路 创建...
    99+
    2022-11-13
  • java反射获取包下所有类的操作
    我就废话不多说了,大家还是直接看代码吧~ public static void main(String[] args) { try { ...
    99+
    2022-11-12
  • idea怎么查看接口的所有实现类
    要查看一个接口的所有实现类,可以使用以下方法:1. 使用开发工具的查找功能:在开发工具的工程中,可以使用查找功能来搜索实现了该接口的...
    99+
    2023-08-20
    idea
  • java中如何获取map的所有键
    在Java中,可以使用`keySet()`方法获取Map的所有键。该方法返回一个Set集合,其中包含Map中所有的键。以下是一个示例...
    99+
    2023-08-31
    java
  • 如何获取包下所有类中的注解的值(java工具类)
    获取包下所有类中注解的值 作用: 这个工具类主要的作用就是获取类中的注解的值。 应用场景: 做权限的时候获取@RequestMapping();的值,自动添加到数据库中。 ...
    99+
    2022-11-12
  • 如何使用spring动态获取接口的不同实现类
    这篇“如何使用spring动态获取接口的不同实现类”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何使用spring动态获取...
    99+
    2023-06-29
  • 使用spring动态获取接口的不同实现类
    目录spring动态获取接口的不同实现类当时想到了两种解决办法获取某接口所有实现类正文结果spring动态获取接口的不同实现类 最近做项目,有个需求是和外部对接,从接口获取新闻数据,...
    99+
    2022-11-13
  • java如何获取数据库所有表名
    要获取数据库中的所有表名,可以使用如下的Java代码:```javaimport java.sql.Connection;impor...
    99+
    2023-09-27
    java 数据库
  • 利用Java如何获取Mybatis动态生成的sql接口实现
    目录前言1、编写xml: SqlGenarate.mapper.xml2、定义接口3、实现接口总结前言 如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 S...
    99+
    2022-11-12
  • java如何创建接口实现类
    在 Java 中,可以使用 `implements` 关键字来创建接口的实现类。具体步骤如下:1. 定义一个接口,在接口中声明需要实...
    99+
    2023-08-24
    java
  • java如何获取压缩包下所有文件
    要获取压缩包下的所有文件,可以使用Java的ZipFile类来实现。下面是一个示例代码: import java.io.IOExce...
    99+
    2023-10-27
    java
  • java获取真实的请求接口ip地址
    在Java程序中获取请求的真实IP地址可以使用以下方法: 使用javax.servlet.http.HttpServletRequest类中的getRemoteAddr()方法,这个方法可以获取请求的IP地址。 可以检查X-Forwar...
    99+
    2023-09-04
    java tcp/ip servlet 前端 服务器
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作