在类内部的接口和接口中创建类有什么用?

Bha*_*dri 25 java interface class

我想知道在类内部放置类和在类中的接口需要什么?

class A {
   interface B {}
}

interface D {
   class E {}
} 
Run Code Online (Sandbox Code Playgroud)

小智 21

这是我从一些链接复制和粘贴(我之前做过并与你分享)可能会对你有所帮助.

1)

interface employee{
class Role{
      public String rolename;
      public int roleId;
 }
Role getRole();
// other methods
 }
Run Code Online (Sandbox Code Playgroud)

在上面的界面中,您将Role类型强烈绑定到employee接口(employee.Role).2)在接口内部使用静态类,您可以缩短公共编程片段:检查对象是否是接口的实例,如果是,则调用此接口的方法.看看这个例子:

  public interface Printable {
    void print();

    public static class Caller {
        public static void print(Object mightBePrintable) {
                if (mightBePrintable instanceof Printable) {
                        ((Printable) mightBePrintable).print();
                }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

而不是这样做:

  void genericPrintMethod(Object obj) {
    if (obj instanceof Printable) {
        ((Printable) obj).print();
    }
}
Run Code Online (Sandbox Code Playgroud)

你可以写:

   void genericPrintMethod(Object obj) {
         Printable.Caller.print(obj);
    }
Run Code Online (Sandbox Code Playgroud)


Met*_*002 5

组织.

在接口内指定一个类将该类直接绑定到该接口 - 使用该接口的客户端将可以访问该类及其提供的所有功能.

我已经在界面中看到了类的模式,实际上只在Java 1.4及更低版本中提供了枚举类型以与接口一起使用 - 因为接口只能使用类,并且类可以受到保护,使用的客户端接口只能接受接口中定义的类的实例作为枚举值.这只是我能想到的唯一例子 - 我确定其他人存在,但我很少看到使用的接口内部的类.

对于翻转的案例,它仍然是组织.在类中指定接口表示只有该类应该使用该接口.其他类和接口仍然可以使用该接口,具体取决于其访问级别,也不是组织记录接口意图的要点 - 仅在包含它的类中使用.

如果它在该类之外有用,则应该将其适当地移动到它自己的类型.因此,这两种用途都很少见,但它们的用途主要是组织代码并直接通过Java语法记录其意图.