因此,您可以使用<>
执行泛型类型,并且可以使用()
传递对象。但是当您使用{}
传递信息时,它会被称为什么?如本示例所示?
new Filter<CLDevice>() {
public boolean accept(CLDevice device) {
CLDeviceCapabilities caps = CLCapabilities.getDeviceCapabilities(device);
return caps.CL_KHR_gl_sharing;
}
}
这也适用于构造函数,或者任何方法都可以使用{}
来收集数据吗?
是否有与此类代码相关的警告,例如它是否具有高性能?
答案 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
使用{}创建方法体或匿名类/方法/对象..在这里,您的代码定义了一个匿名方法。