如果我们在oracle docs中看到Thread.UncaughtExceptionHandler或Map.Entry等定义,则将它们定义为公共静态接口。想知道Java如何在内部实现或编写?因为当我们尝试创建类似模式的一些自定义界面时,编译器会在点(。)处抛出异常!
public static interface Dot.Intf{
void disp();
}
答案 0 :(得分:3)
这是因为嵌套类型。
像,
public class Thread {
public static interface UncaughtExceptionHandler {
//interface members
void uncaughtException(Thread t, Throwable e);
}
}
并且可以有一个单独的类来实现Thread类中定义的接口。
public class ThreadGroup implements Thread.UncaughtExceptionHandler {
//implementation to the uncaughtException method.
}
访问时,它将是Thread.UncaughtExceptionHandler(){}
答案 1 :(得分:1)
它被称为inner class或nested class。
此代码显示了一些示例:
public class A {
public static void main(String[] args) {
B b = new A.B();
I i = new A.Impl();
C c = new A().new C();
}
//nested class
static class B { }
//nested interface
static interface I { }
static class Impl implements I { }
//inner class
class C { }
}
答案 2 :(得分:0)
我们可以像这样引用静态内部类。 例如:
public interface A {
public static interface B {
void blah();
}
}
为了引用B,我们将使用该语法。