精华内容
下载资源
问答
  • 今天小编就为大家分享一篇关于Java动态获取实现某个接口下所有的实现类对象集合,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • 关键在于: applicationContext.getBeansOfType(ChartService.class);... 获得Map对象的key为实现类的名称如:chartSimpleServiceImpl 获得Map对象的value为实现类对象如:com.read.data.cms.service.impl.Char...

    关键在于: applicationContext.getBeansOfType(ChartService.class);

                      获得Map对象的key为实现类的名称如:chartSimpleServiceImpl

                      获得Map对象的value为实现类对象如: com.read.data.cms.service.impl.ChartExtraServiceImpl@5c85b6e9

    applicationContext的获取方法有很多种,我这里暂列两种

    第一种方式实现接口所有类集合(注解)

    @Autowire
    private ApplicationContext applicationContext;
    
    
    Map<String,ChartService> res = applicationContext.getBeansOfType(ChartService.class);
    res.get("实现类的字符串如:chartSimpleServiceImpl")
    res.get获得的结果,就是当前实现类对象

    第二种方式实现接口所有类集合(实现接口)

    /**
     * @author: tianyong
     * @Time: 2019/6/26 11:17
     * @description:服务工厂(主要用于动态注入接口实现类)
     */
    @Component
    public class ServiceFactory implements ApplicationContextAware {
    
    
        //定义成员变量
        private static Map<String,ChartService> res;
    
    
        /**
          * @author: tianyong
          * @time: 2019/6/27 16:04
          * @description:设置上下文参数
          */
        @Override
        public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
            res = applicationContext.getBeansOfType(ChartService.class);
        }
    
    
        /**
          * @author: tianyong
          * @time: 2019/6/27 16:05
          * @description:根据标记返回当前接口实现类
          */
        public static <T extends ChartService> T getServices(String flag){
            return (T)res.get(flag);
        }
    
    
    
    }
    

    如果对您有帮助,麻烦关注本人公众号:周三想吧

    展开全文
  • 在java平台,实现异步调用的角色主要三种角色:调用者、取货凭证、真实数据。本篇文章给大家介绍java实现异步调用实例代码,需要的朋友可以参考下
  • 2.特殊情况 当Java抽象类实现某个接口后没必要实现所有的方法。3.注意点 当Java普通类实现接口后必须实现接口中的所有方法。4.原因为什么抽象类不需要实现所有方法? 因为抽象类本身是具有抽象性的,它的方法也...
    1.结论

        并不是所有的类实现接口后都必须实现接口的所有方法!

    2.特殊情况

        当Java抽象类实现某个接口后没必要实现所有的方法。

    3.注意点

        当Java普通类实现接口后必须实现接口中的所有方法。

    4.原因

    • 为什么抽象类不需要实现所有方法?

             因为抽象类本身是具有抽象性的,它的方法也大多不需要进行实现,只需要声明,其他实现的过程多交给继承它的子类。而接口本身就更为抽象的一种形式,所以如果让一个本来抽象的类去实现一个更为抽象的接口的所有方法是没有必要的,除非对于抽象类本身而言需要接口的一些方法来完善自身。而没有实现的其他方法完全可以交给它的派生类去实现

    • 为什么普通类需要实现所有方法?

            普通类中的所有方法都需要有方法体,即使是空方法。当一个普通类实现了一个接口后就必须要实现其所有的方法,如果有任何一个方法没有实现,在类向接口向上转型的时候就会因为丢失数据(因为此时普通类中没有接口的完整数据)导致转型失败,这样显然是不允许的。

    5.同时使用抽象类和接口有什么好处?

          如果一个普通类想要实现接口的某些方法,此时需要借助抽象类,可以让抽象类先实现接口中的部分方法,然后普通类通过继承抽象类后再去实现自己需要的接口中的方法。


    展开全文
  • 场景:MyServiceImpl1 和MyServiceImpl2 都实现了MyService接口 @Service public class MyServiceImpl1 implements MyService { @Override public Type getType() { return Type.ONE; } // ... } ...

    场景:MyServiceImpl1 和 MyServiceImpl2 都实现了 MyService接口

    @Service
    public class MyServiceImpl1 implements MyService {
        @Override
        public Type getType() {
            return Type.ONE;
        }
        // ...
    }
    
    @Service
    public class MyServiceImpl2 implements MyService {
        @Override
        public Type getType() {
            return Type.TWO;
        }
        // ...
    }
    

     方式1,通过set注入

    @Component
    public class InitializeTest {
    
        private static Map<Type, MyService> myServiceMap = new LinkedHashMap<>();
    
        @Autowired(required = false)
        public void setMyServices(List<MyService> services) {
            myServiceMap.clear();
            for (MyService service : services) {
                myServiceMap.put(service.getType(), service);
            }
        }
    
        public static MyService getMyServiceByType(Type type) {
            return myServiceMap.get(type);
        }
    }

     

    方式2, 通过反射获取同一包下的,都实现了MyService接口的实现类

    @Component
    public class MyCommandRunner implements CommandLineRunner {
    
        @Autowired
        private ApplicationContext applicationContext;
    
        private static Map<Type, MyService> myServiceMap = new LinkedHashMap<>();
    
        @Override
        public void run(String... args) {
            // MyCommandRunner 与实现了MyService接口的实现类位于同一包下
            Reflections reflections = new Reflections(this.getClass().getPackage().getName());
            Set<Class<? extends MyService>> myClasses = reflections.getSubTypesOf(MyService.class);
            for (Class<? extends MyService> myClass : myClasses) {
                MyService myService = applicationContext.getBean(monitor);
                myServiceMap.put(myService.getType(), myService);
            }
        }
    
        public static MyService getMyServiceByType(Type type) {
            return myServiceMap.get(type);
        }
    }

     


    参考来源于:

    https://blog.csdn.net/moneyshi/article/details/78500593

    展开全文
  • 抽象类实现某个接口,可以不实现所有接口的方法,可以由它的子类实现。而普通类即非抽象类则必须实现接口里的全部方法。 同样地,再来讲述一下接口: 1 接口的设计解决了java只能单继承的缺点,可以实现多个接口来...

    在这里特别记录一下,以防自己再次用错~

    “Java中,一个类实现了某接口,则必须实现该接口中的所有方法么?”这句话其实是不准确的,因为我们还没有考虑到抽象类。

    抽象类实现某个接口,可以不实现所有接口的方法,可以由它的子类实现。而普通类即非抽象类则必须实现接口里的全部方法。

    同样地,再来讲述一下接口:

    1 接口的设计解决了java只能单继承的缺点,可以实现多个接口来实现java的多继承。
    2 实现某个接口必须覆写其中的所有方法,当然也可以是一个空的实现(方法体为空没有任何作用),但是这个类必须是非抽象类,抽象类如上文。

    后面有时间会把相应的代码补充一下~

    展开全文
  • java 实现接口

    千次阅读 2018-06-30 10:11:19
    6.2 实现接口 1 类实现接口 在Java语言中,接口由类来实现以便使用接口中的方法。 一个类需要类声明中使用关键字implements声明该类实现个或多个接口。 如果实现多个接口,用逗号隔开接口名,例如A类实现Pintable...
  • if(对象名 instanceof 接口名){ }  
  • java如何判断一个类是否实现某个接口 Class中有个方法 public native boolean isAssignableFrom(Class cls)用来判断子类是否继承于父类的或者父接口的。 public native boolean isAssignableFrom(Class<?> cls); ...
  • 通过反射实现获取某个接口的所有实现类,前提是这些实现类需要在同一个包中。 1.定义接口 package com.lm.validate public interface IDataValidator{ boolean validate(String str); } 2.
  • Java实现接口与继承的区别

    千次阅读 2020-10-09 00:16:57
    Java中,接口实现和继承的实现很类似的,写法上是几乎是一致的,就是关键字这一部分不一样,即接口使用的关键字为implements,而继承使用的关键字为extends。代码如下: 接口的代码: public class ...
  • java中,一个类实现某个接口,必须重写接口中的所有方法吗? 不一定,关键要看子类是否是抽象类。 如果子类是非抽象类,则必须实现接口中的所有方法;  如果子类是抽象类,则可以不实现接口中的所有方法,因为抽象...
  • java找到指定接口实现

    千次阅读 2020-02-10 13:30:20
    一、背景 想在自己开发的项目上加一个算法工具类用来...因此开始在学习如何实现,在学习过程中发现需要写一个方法用来找到指定接口实现类,因此开启了这趟学习之旅。 二、寻求答案的路途 刚开始看到根据指定接...
  • java一个接口拥有多个实现类,调用指定实现
  • java中的异步处理和Feature接口(一)

    万次阅读 2018-08-19 13:38:29
    背景介绍 Feature接口 ...为实现这一功能,你需要向 谷歌或者Twitter的API请求所有语言中针对该主题最热门的评论,可能还需要依据你的内部算法 对它们的相关性进行排序。之后,你可能还需要使用谷歌的翻译...
  • Java基础知识面试题(2020最新版)

    万次阅读 多人点赞 2020-02-19 12:11:27
    文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的...
  • java中,一个类实现某个接口,必须重写接口中的所有方法吗? 不一定,关键要看子类是否是抽象类。 如果子类是非抽象类,则必须实现接口中的所有方法;  如果子类是抽象类,则可以不实现接口中的所有方法,因为抽象...
  • JAVA基础——接口(全网最详细教程)

    万次阅读 多人点赞 2018-05-10 09:46:42
    官方解释:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。 我的解释:接口...
  • Java 接口实现(详细版)】

    千次阅读 多人点赞 2021-03-31 09:00:37
    接口实现1 接口二级目录三级目录2 实现接口3 理解接口 1 接口 二级目录 三级目录 2 实现接口 3 理解接口
  • Java实现接口的三种方式

    千次阅读 2019-08-25 21:40:24
    Java实现接口的三种方式 博客作为个人学习笔记,随着学习深入更新。 最近在学习java中的lambda基础表达式,在理解和学习使用过程中花了些时间,为了能更好的理解lambda,就决定将一些使用方式,理解写在这里。 (1...
  • JAVA中implements实现接口

    千次阅读 2019-09-11 10:59:28
    JAVA中implements实现接口 这里有一个游戏,人猿泰山。 主角是一个单独的类,这里我们主要用怪物说明接口的用法: 怪物有很多种, 按地域分:有的在天上飞,有的在地上跑,有的在水里游 按攻击方式分:有的能近...
  • 如果子类是非抽象类,则必须实现接口中的所有方法; 如果子类是抽象类,则可以不实现接口中的所有方法,因为抽象类中允许有抽象方法的存在! 1、抽象类定义 抽象类往往用来表征对问题领域进行分析、设计中得出的...
  • Java多线程实现接口调用

    千次阅读 2019-11-23 19:37:24
    需要把这些记录调用某个接口(这个接口一次只能查询10个客户信息),然后把接口返回信息解析保存到另一个表里。 客户信息表(cust_info)如下: id cust_id status remark input_time update_tiem 1 ...
  • Java实现 接口请求频率限制方案源码

    千次阅读 2020-09-15 20:26:19
    实际工作中在某些业务场景会遇到一个问题,用户疯狂点击某个按钮功能导致接口在短时间内被重复请求多次,且这些重复请求在业务上是无效的请求,这个问题即会导致后端出现大量重复无效或错误的数据,也会对后端服务器...
  • Java面试题大全(2020版)

    万次阅读 多人点赞 2019-11-26 11:59:06
    发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java ...
  • Java对API接口进行限流

    千次阅读 2019-04-18 17:58:01
    package com.shuixian.jianghao.utils; import ... public class LimitUtil { //每秒发出100个令牌,限制并发量为100 private static RateLimiter rateLimiter=RateLimite...
  • @Controller public class TestController { @Autowired private WebApplicationContext webApplicationContext; @RequestMapping("/index"... //根据接口类型返回相应的所有bean ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 514,026
精华内容 205,610
关键字:

java实现某个接口

java 订阅