我正在尝试理解泛型和接口,我遇到了这段代码:
Func<Integer, Integer> fDouble = new Func<Integer, Integer>()
{
public Integer apply(Integer x)
{
return x * x;
}
};
我明白方法fDouble返回输入整数的两倍,但是,我无法理解它是如何存在的;之后}以及
声明方法的方式Func<Integer, Integer> fDouble = new Func<Integer, Integer>()
答案 0 :(得分:2)
代码正在创建实现Func<Integer, Integer>
接口的anonymous class。提供的链接是一个Java教程,可以帮助您理解语法。
;
就在那里,因为代码声明了一个变量fDouble
,并在该变量中存储了对匿名类新创建的对象的引用。
答案 1 :(得分:2)
这实际上是anonymous class的一种情况,这是一种创建类而不给它显式名称的方法。可以通过扩展类或实现接口来创建匿名类。实现接口的匿名类的语法是:
MyInterface object = new MyInterface() {
/* override or implement methods here */
};
分号是必需的,就像在Java中的每个语句之后都需要它一样。
答案 2 :(得分:1)
实际上,它被称为匿名内部类。此外,最好指定如下:
interface Func<T extends Number>{
T measureShape(T t);
}
因为如果使用可以是Number接口的任何类型的数据,则应使用有界类型。所以现在,您可以将它与Integers或Double一起使用。匿名类也只是实现Func接口并创建它的实例。