使用{}传递参数信息

时间:2014-07-21 09:31:12

标签: java interface anonymous-class

因此,您可以使用<>执行泛型类型,并且可以使用()传递对象。但是当您使用{}传递信息时,它会被称为什么?如本示例所示?

new Filter<CLDevice>() {
    public boolean accept(CLDevice device) {
        CLDeviceCapabilities caps = CLCapabilities.getDeviceCapabilities(device);
        return caps.CL_KHR_gl_sharing;
    }
}

这也适用于构造函数,或者任何方法都可以使用{}来收集数据吗?

是否有与此类代码相关的警告,例如它是否具有高性能?

4 个答案:

答案 0 :(得分:2)

在这种情况下,您通过匿名类为Single Abstract Method (SAM)接口或功能接口提供实现。

答案 1 :(得分:2)

在java {}中定义范围。有各种类型的范围,例如class,method,block。

在您的示例中,您正在创建anonymous class

答案 2 :(得分:2)

您所展示的内容实际上并未传递信息(例如将参数传递给方法),而是传递行为。

因为直到Java 7没有lambdas存在,为了传递行为你总是需要一个类(毕竟在java世界中所有的一个类)。您显示的语法是匿名内部类的语法。当您不需要/想要创建新的类文件时,此语法用作快捷方式,但只需要传递一些行为。

请注意,如果必须实现(行为传递)多个方法,则可以轻松使用相同的语法 - 这是Java 8 lambdas无法做到的。

答案 3 :(得分:0)

So you can do generic types with <>.

You can pass objects with ().

What is it called when you pass information with {}, as in this example

使用{}创建方法体或匿名类/方法/对象..在这里,您的代码定义了一个匿名方法。