如何在Thread.UncaughtExceptionHandler或Map.Entry等接口中有一个点(。)?

时间:2015-09-25 08:33:05

标签: java interface

如果我们在oracle docs中看到Thread.UncaughtExceptionHandler或Map.Entry等定义,则将它们定义为公共静态接口。想知道Java如何在内部实现或编写?因为当我们尝试创建类似模式的一些自定义界面时,编译器会在点(。)处抛出异常!

public static interface Dot.Intf{
void disp();
}

3 个答案:

答案 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 classnested 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,我们将使用该语法。