Java:接口参考?

Stu*_*ler 0 java interface

我们都知道你不能在 Java 中实例化一个接口(至少直接实例化)。

但是有这样的事情:

public class Test{
    public interface Link {
      void mySamplemethod();
      String myString ="HELLO!";
     }

     public static void main(String []args){

        Link b;

     }
}
Run Code Online (Sandbox Code Playgroud)

b……究竟什么,它怎么可能有实际用途?

Lui*_*oza 5

b是一个Link没有值的类型变量,甚至没有null。为了有实际用途,您必须使用其类实现Link接口的对象引用来初始化它。

如果要Link使用非null值进行初始化,则应创建一个实现此接口的类。这在 Java 中是强制性的。如果你不想在这个类之外创建一个新类,你可以在类内部或方法内部创建一个新类(这将是一个匿名类)。这是一个示例:

public static void main(String []args){
    Link b = new Link() {
        @Override
        public void mySampleMethod() {
            System.out.println("hello");
        }
    };
    b.mySampleMethod();
}
Run Code Online (Sandbox Code Playgroud)

这里已经很好地解释了使用接口进行编程而不是直接类的目的:“编程到接口”是什么意思?(无需重新发明轮子)。