java - 为什么我们要在类中声明接口(interface)?

标签 java

为什么我们应该在Java中的类中声明接口(interface)?

例如:

public class GenericModelLinker implements IModelLinker {

  private static final Logger LOG =LoggerFactory.getLogger(GenericModelLinker.class);
  private String joinAsPropertyField;
  private boolean joinAsListEntry;
  private boolean clearList;
  private List<Link> joins;

  //instead of a scalar property
  private String uniqueProperty;

  public interface Link {

    Object getProperty(IAdaptable n);

    void setProperty(IAdaptable n, Object value);

  }
}

最佳答案

当您想要收集对象中的某些字段以强调概念时,您可以创建一个外部类或一个内部类(称为嵌套(静态)或内部)。

如果您想强调这个协作类在原始对象使用之外完全没有任何意义(没有用处),您可以将其嵌套/内部。

因此,在处理某些层次结构时,您可以描述一个“嵌套”接口(interface),该接口(interface)将由包装类的子类实现。

在 JDK 中,最重要的例子是 Map.Entry 内部接口(interface),它定义在 Map 接口(interface)中,并通过 HashMapLinkedHashMap 等各种方式实现......

当然,Map.Entry 需要声明为 public,以便在迭代 map 时无论代码在哪里都可以访问。

关于java - 为什么我们要在类中声明接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39376415/

相关文章:

java - 启用 SAXParser qName 来处理空格

java - 上传文件 Android org.apache.http.entity.mime.MultipartEntity : Bad Request Error

java - 卢塞恩 : Search with partial words

java - 错误: Could not find or load main class IntelliJ MacOs

java - 删除启动 jar 的脚本文件

java - 不再支持 Android NDK APP_STL gnuSTL_shared

java - 使用 Spring MVC 绑定(bind)表单对象 CGLIB 的动态表单

java - 如果从 jar 运行,带有嵌入式 jetty 的 Spring 应用程序找不到 webdefault.xml

java - 如何只替换部分匹配的子串?

java - 为什么jvm生成serialVersionUID?