java中接口多个实现类,如何指定实现类,根据子类类型选择实现方法

这篇具有很好参考价值的文章主要介绍了java中接口多个实现类,如何指定实现类,根据子类类型选择实现方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题背景

在Java代码中,经常会遇到一个接口有多个实现的情况。而这些实现类的参数又是不同的子类,这时候我们该如何选择正确的实现方法呢?

解决方案

我们可以通过判断参数的子类类型来选择正确的实现方法。具体实现可以使用Java中的instanceof关键字,它可以判断一个对象是否是某个类的实例。

示例代码如下:

public interface MyInterface {
    void doSomething();
}

public class MyClassA implements MyInterface {
    public void doSomething() {
        System.out.println("MyClassA doSomething()");
    }
}

public class MyClassB implements MyInterface {
    public void doSomething() {
        System.out.println("MyClassB doSomething()");
    }
}

public class Test {
    public static void main(String[] args) {
        MyInterface obj1 = new MyClassA();
        MyInterface obj2 = new MyClassB();

        if (obj1 instanceof MyClassA) {
            ((MyClassA) obj1).doSomething();
        } else if (obj1 instanceof MyClassB) {
            ((MyClassB) obj1).doSomething();
        }

        if (obj2 instanceof MyClassA) {
            ((MyClassA) obj2).doSomething();
        } else if (obj2 instanceof MyClassB) {
            ((MyClassB) obj2).doSomething();
        }
    }
}

在上面的代码中,我们定义了一个接口MyInterface和两个实现类MyClassA和MyClassB。在Test类的main方法中,我们分别创建了一个MyClassA和一个MyClassB的实例,并使用instanceof关键字判断它们的类型,然后调用对应的doSomething方法。

第一种实现方式:直接粗暴的使用new关键字。
定义一个接口实现类,然后直接在调用的时候直接new实现类

第二种,使用注解。
用@Qualifier
通过这个标示,表明了哪个实现类才是我们所需要的,添加@Qualifier注解,需要注意的是@Qualifier的参数名称为我们之前定义@Service注解的名称之一。

总结

在Java代码中,一个接口有多个实现的情况下,我们可以通过判断参数的子类类型来选择正确的实现方法。使用instanceof关键字可以判断一个对象是否是某个类的实例,从而选择正确的实现方法。文章来源地址https://www.toymoban.com/news/detail-662103.html

到了这里,关于java中接口多个实现类,如何指定实现类,根据子类类型选择实现方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java一个接口多个实现得调用

    在 Java 中,如果一个接口有多个实现类,可以通过以下几种方式来调用不同的实现类: 根据具体实现类的类型进行调用: 利用接口的引用,根据条件判断调用不同的实现类: 在集合中存储不同的实现类对象,通过循环遍历调用: 使用工厂模式或依赖注入框架来动态获取不同

    2024年02月13日
    浏览(31)
  • java子类继承父类方法、或者接口中方法的javadoc注释

    详情可以阅读: https://docs.oracle.com/en/java/javase/19/docs/specs/javadoc/doc-comment-spec.html#method-comment-inheritance 子类继承父类、或者子类实现接口,在子类中为了避免重复写注释,可以在子类方法注释的主要描述部分、或者@return、@param、@throws标记后面的文本参数部分插入{@inheritDoc}标记

    2024年02月11日
    浏览(27)
  • 两个视图基类 快速实现publish的5个接口 9个视图子类

    urls.py--子路由--app01--urls.py 序列化类 表模型 视图类 只需要修改视图类上的两个类属性即可,其他的不用动 urls.py views.py serializer.py 5个视图扩展类(不是视图类--》没有继承APIView及其子类,不能单独用,需要配合GenericAPIView)---》每个分别写的5个接口中得某一个方法 views.py 第四

    2024年02月04日
    浏览(31)
  • Autofac高级应用,一个接口多个实现类如何注册到容器并获取实例

      当使用Autofac处理一个接口有多个实现的情况时, 通常会使用键(key)进行区分 或者 通过IIndex索引注入 ,也可以 通过IEnumerable集合获取所有实例 ,以下是一个具体的例子,演示如何在Autofac中注册多个实现,并通过构造函数注入获取指定实现。 首先,确保你已经安装了A

    2024年02月05日
    浏览(33)
  • java prometheus 自定义exporter开发,以及实现多个接口返回metrics

      exporter的作用是采集需要监控的数据,并将采集到的数据转换成prometheus所需要的数据格式,将这些转换后的数据返回,供给prometheus 使用。 java 编写自定义exporter所需要的pom.xml: exporter的四类指标说明 数据类型 解释 Counter Counter类型代表一种样本数据单调递增的指标,即

    2023年04月08日
    浏览(43)
  • java根据分组函数GroupingBy进行多个条件组合分组

    在SQL中经常会用到分组,我们也常常遇到一些组合分组的场景。 java8分组 传统写法(单个字段分组) 场景:根据 城市 进行分组 使用的是方法引用:User::getCity 来完成分组 java8分组 传统写法(多个字段分组) 场景:根据 城市,性别进行分组 一般的写法会是下面的这种写法,

    2023年04月19日
    浏览(30)
  • C# 父类实现的 IEquatable<T> 接口,重写的相等性判断函数都能被子类继承

    在父类重写的 Equals 方法,继承的 IEquatable 接口,重写的 == ,!= 运算符,重写的 GetHashCode 方法在子类中仍然是表现为被重写的状态。 现在让子类也实现 IEquatable 接口 此时代码提示如下 子类实现接口后,调用的默认就是子类实现的 Equals 方法。也可以用强制转换调用父类的

    2024年02月16日
    浏览(30)
  • Java + OpenCv 根据PID/VID调用指定摄像头

    问题 :         主机接入了多个USB摄像头,传统的OpenCv是用摄像头插入usb的下标调取的,如过只接入一个摄像头那直接使用capture.open(0);这种方式调用没有任何问题,多个的话,就会出现问题,因为USB拔插时候对应摄像头对应的下标会发生变化。 解决思路 :        

    2024年02月12日
    浏览(27)
  • Java通过Lambda表达式根据指定字段去除重复数据(集合去重)

    这里博主给大家封装好了一个工具类,里面有两个方法。 方法一:可以根据指定字段去除重复数据。 方法二:可以获取到重复的数据。 大家在使用过程中直接拷贝下方代码在要去重的类中调用即可。 导入这个工具类后怎么使用呢?我们接着往下看。 List rstList = list.stream()

    2024年02月16日
    浏览(28)
  • list对象中如何根据对象中某个属性去重使用Java8流实现

    在 Java 8 的流操作中,可以使用 distinct 方法来对一个对象流进行去重,但是默认情况下它会使用对象的 equals() 方法来判断重复。如果你希望根据对象的某个属性进行去重,则可以使用 distinct 方法结合 map 方法来实现。 下面是一个示例代码,假设你有一个 List 对象 list,其中包

    2024年02月11日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包