繁体   English   中英

调用由公共接口定义的方法?

[英]Calling a method that is defined by a public interface?

我在理解这段代码时遇到了一些麻烦。 内容变量是一个接口。 我无法理解如何直接在另一个 class 未实现的接口上调用该方法。 我是否缺少一些 java 基础? 还是这与它是自动接线的事实有关?

public class Utils {
        
    @Autowired
    private Content cContent;

    @TraceMethod
    public ConcurrentHashMap<String, String> getCMSContent(Locale locale, String businessId, String appId, String contentType, String contentId) {
        
        CMContent content=null;
        try {
            content = cContent.getContent(locale.getValue(), businessId, appId, contentType, contentId);
        } catch (Exception e) {
            LOG.error("Error in content call");
        }
        ...
        ...
}

界面

public interface Content {
    CMContent getContent(String var1, String var2, String var3, String var4, String var5) throws Exception;
 }
        

该代码旨在使用依赖注入框架,例如 Spring。

当 Spring 创建一个Utils实例时,它将在其上下文中找到另一个实现Content的 object ,并将其分配给cContent 这就是@Autowired注解的含义。

使字段的类型成为接口而不是具体类型允许在不同情况下使用接口的不同实现。 例如,模拟可以用于单元测试Utils class 或 Spring 可以使用工厂来创建实现,并根据应用程序的配置方式提供不同的实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM