Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于Java中接口实例化的疑问_Java - Fatal编程技术网

关于Java中接口实例化的疑问

关于Java中接口实例化的疑问,java,Java,以下程序在运行时将产品堆栈溢出作为输出。 我想知道在实例化TestA的过程中发生了什么 interface TestA { String toString(); } class Test { public static void main(String[] args) { // whats going on in this line ??? System.out.println(new TestA() {public String toString() { re

以下程序在运行时将产品堆栈溢出作为输出。
我想知道在实例化TestA的过程中发生了什么

interface TestA { String toString(); }

class Test 
{
  public static void main(String[] args) 
  {
     // whats going on in this line ???
     System.out.println(new TestA() {public String toString() { return "stackoverflow"; } });
  }
}
您正在实例化一个,它实现了
TestA
接口

此技术对于GUI编程非常有用,因为它可以避免您创建一组命名的一次性使用类。

您正在实例化一个实现
TestA
接口的


此技术对于GUI编程非常有用,因为它可以避免创建一组命名的一次性类。

您要做的是创建一个实现该接口的匿名类。 为了更清楚一点,您也可以写以下内容:

interface TestA { String toString(); }

class Test 
{
  public static void main(String[] args) 
  {
    TestA test = new TestA()
    {
        public String toString()
        {
            return "stackoverflow";
        }
    };

    System.out.println(test);
  }
}

您要做的是创建一个实现接口的匿名类。 为了更清楚一点,您也可以写以下内容:

interface TestA { String toString(); }

class Test 
{
  public static void main(String[] args) 
  {
    TestA test = new TestA()
    {
        public String toString()
        {
            return "stackoverflow";
        }
    };

    System.out.println(test);
  }
}

以下类是动态创建的(没有任何名称):


以下类是动态创建的(没有任何名称):


谢谢大家的快速帮助:)谢谢大家的快速帮助:)实际上它会有一个名字。类似TestA$1的东西,我认为它是java内部的,它不是我们可以使用或需要知道的东西,实际上它会有一个名字。类似TestA$1的东西我认为是java内部的,它不是我们可以使用或需要知道的东西。如果接口有>1个方法怎么办?我们可以做类似的事情吗?是的,当然你也必须实现其他方法。如果接口有>1个方法怎么办?我们可以做类似的事情吗?是的,当然你也必须实现其他方法。