java - 如何检索父接口(interface)的实现类/接口(interface)?

标签 java spring oop

我清楚oop的多态性和继承概念,但是我处于需要知道实现类的情况。例如:

public CommonReadRepository<?> getReadRepository(String tableName) {
        if (tableName == null)
            return null;
        switch (tableName) {
        case "order":
            return orderRepository;
        ...
        }
        return null;
    }

接口(interface)orderRepository扩展了CommonReadRepository,并且由于我的需求,我需要访问orderRepository中定义的函数。

CommonReadRepository<?> repository=getReadRepository("order");

有什么方法可以检查CommonReadRepository的实现(子)类或接口(interface)吗?

当然,我总是可以做这样的事情:

if(tableName=="order")
return (OrderRepository)CommonReadRepository<?>;

我尝试调试 getReadRepository("order"),但它给了我一个 JdkDynamicAopProxy 实例,我不确定它是如何工作的。

if(interface is instanceof xyz class) i do not want to use it because i have 100 of classes and i want to keep it as a last resort... or in other words i don't know about xyz class

谢谢

最佳答案

以下是检查返回的对象是否是指定类的实例的一种方法:

CommonReadRepository<?> repository=getReadRepository("order"); if(repository instanceof WhatEverSubclass) { // do something }

但是使用这种方法并不是 OOP 应该如何完成的。如果您的类都实现相同的接口(interface),为什么不定义一个通用方法,然后在所有子类中使用该方法,但每次都以不同的方式实现它。

关于java - 如何检索父接口(interface)的实现类/接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37555246/

相关文章:

java - 我是否需要创建工厂的测试版本以进行单元测试?

java - 如何使用 Heroku 管理多个 Spring 配置文件

oop - 牺牲设计和代码质量以与现有模块集成

c# - 在 .NET 中,一个类可以有虚构造函数吗?

arrays - 如何避免 Matlab 在创建句柄对象数组作为对象属性时占用指数时间

java - Scala 需要哪些 jar?

java - 获取两个时间之间的时间列表

java - 在 Spring 中添加管理部分

java - Spring MD5以形式出现

java - 如何添加 Spring Security HTTP 响应 header