在接口内创建类和在类内创建接口有什么用
我想知道在接口内放置一个类和在类内放置一个接口有什么需要?
class A {
interface B {}
}
interface D {
class E {}
}
我想知道在接口内放置一个类和在类内放置一个接口有什么需要?
class A {
interface B {}
}
interface D {
class E {}
}
这个我正在从一些链接复制和粘贴(我之前做过并与您分享)可能是可以帮助你一点。
1)
interface employee{
class Role{
public String rolename;
public int roleId;
}
Role getRole();
// other methods
}
在上面的界面中,您将角色类型强绑定到员工接口(employee.角色)。2)使用接口内的静态类,您可以缩短一个常见的编程片段:检查对象是否是接口的实例,如果是这样,则调用该接口的方法。请看这个例子:
public interface Printable {
void print();
public static class Caller {
public static void print(Object mightBePrintable) {
if (mightBePrintable instanceof Printable) {
((Printable) mightBePrintable).print();
}
}
}
}
现在,与其这样做,不如这样操作:
void genericPrintMethod(Object obj) {
if (obj instanceof Printable) {
((Printable) obj).print();
}
}
你可以写:
void genericPrintMethod(Object obj) {
Printable.Caller.print(obj);
}
组织。
在接口内指定一个类会将该类直接绑定到该接口 - 使用该接口的客户端将有权访问该类及其提供的所有功能。
我已经看到接口内部的类的模式实际上只在Java 1.4及更低版本中提供与接口一起的枚举类型 - 由于接口只能使用类,并且类可以受到保护,因此使用接口的客户端只能接受接口中定义的类的实例作为枚举值。这只是我能想到的唯一例子 - 我确信还有其他例子存在,但我很少看到所使用的接口内部有一个类。
对于翻转的情况,它仍然是组织。在类中指定接口表示只有该类应使用该接口。其他类和接口仍然可以使用该接口,具体取决于其访问级别,这不是仅在包含它的类中使用的重点 - 组织记录了接口的意图。
如果它在该类之外有用,则应将其适当地移动到其自己的类型。因此,这两种用途都很少见,但它们的用途主要是通过Java语法直接组织代码并记录其意图。