-3

这里是工厂的“内部班”?来自 Java Jung 图形包:

   Factory<Graph<String, Integer>> graphFactory = new Factory<Graph<String, Integer>>()
   {
       public Graph<String, Integer> create()
       {
           return new SparseMultigraph<String, Integer>();
       }
   };

我想知道的是上面的编程语言概念是什么?特别是Java中的这个概念是什么?以上是内部类吗?这显然不是一种方法。对我来说这似乎很奇怪,因为它构造了一个 Factory 对象,然后在末尾有一个带有分号的大括号以及一个创建图形的方法。

4

4 回答 4

4

这是一个匿名的内部类。上面的代码创建了类的子Factory类(或者实现Factory接口的类),覆盖了它的create()方法,调用了它的构造函数,并将结果赋给了graphFactory变量。

于 2012-12-29T17:45:49.440 回答
3

它是一个匿名内部类

于 2012-12-29T17:44:13.983 回答
3

这是一个匿名内部类的概念。通俗地说,它也可以称为无名类。关于使用此类反对继承的类一直存在争论。通常,如果有子类的一次性使用要求,那么匿名类比继承类更方便。

于 2012-12-29T17:54:35.263 回答
0

根据帖子,您似乎知道您正在谈论的是java中匿名类的概念。现在既然你在问这个:答案是,顾名思义,这个类没有名字,因此在一个单步类声明中,类的实例的创建就完成了。由于这个原因,使用匿名类可以节省创建 .java 文件的时间和精力。:) 通常匿名类必须实现超类或接口中的所有抽象方法,并且应该使用超类的所有默认构造函数。

于 2012-12-29T18:41:24.883 回答