使用接口的Java泛型方法

时间:2013-12-27 15:43:50

标签: java generics interface

我正在尝试理解泛型和接口,我遇到了这段代码:

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>()

3 个答案:

答案 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接口并创建它的实例。