java - 如何在返回接口(interface)引用时知道将使用哪个实现

标签 java class interface return

@Override
public IEntity updateEntity(IEntity entity) {
    String entityType = null;
    try {
        entityType = getEntityType(entity);
        if (entity != null) {

            getHibernateTemplate().merge(entity);

        }
    } catch (Exception e) {
        ExceptionUtils.throwVSXException(entityType, e);
    }
    return entity;
}

公共(public)接口(interface) IEntity 扩展可序列化{

ConnectivityEntity getConnectivityEntity();}

虽然 IEntity 是一个接口(interface)并实现了如此多的类,但如何了解哪个实现的类将使用此返回值

最佳答案

您可以使用instanceof运算符并检查实现类。例如,如果类 A 和 B 实现 IEntity 接口(interface),那么您可以检查如下:

@Override
public IEntity updateEntity(IEntity entity) {
   String entityType = ""; // Returing null is bad
   ...... 

   if(entity instanceof A){
    entityType="A class"
   }
   else if(entity instanceof B){
    entityType= "B class"
   }
   return entityType
 }

关于java - 如何在返回接口(interface)引用时知道将使用哪个实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29620559/

相关文章:

java - 对象类作为 Java 中的父类(super class)

java - @MustOverride 注释?

java - 文本到xml文件

java - Spring Session JDBCTokenRepository 覆盖默认表

java - 在java中将类内容打印到控制台

c# - 如何在序列化期间忽略我不拥有的子类的属性?

c++ - 如何使用概念在 C++ 20 中提供默认实现?

c# - 如何最小化一个只读属性,其值取决于类方法调用?

java - 从 Telnet 获取输出

java - 在 EditText 中按下 Enter 时停止关闭键盘?