我必须解释我的主题,因为我不知道如何在谷歌上搜索。。。我只需要一个提示。
我正在做一个关于引用方法和Lamdba的Java教程"如何过滤人员列表中的人员";。我不担心我该怎么做,而是我能在哪里找到并解释什么是这个构造"strong>";filterName和界面中的另一个"strong>";默认公共Filter或(Filter filtro({">
";filterName,这是一个Interface.or
";默认的公共Filter或(Filter-filtro({">我认为这是一个没有名称的方法,因为它就像一个函数接口,不需要名称,但如何使用或…?
我发现了这种结构:
public class MainDF {
public static void main(String[] args) {
test();
}
public static void test() {
Filter filterName = new FiltroName();
Filter filterAge = new FilterAge();
// I've never seen this, an interface with and or
Filter otherFilterName = filterName.or( filterAge );
Persona persona = new Persona("Michael", 18);
filterName.testear(persona);
otherFilterName.testear(persona);
}
}
使用的接口是这样的:
import data.Persona;
public interface Filter {
public boolean testear( Persona persona );
// I can't understand how this works, Filter is the type return but
// how it works the combination of Filter or (Filter filter)
default public Filter or (Filter filtro) {
System.out.println("entrando en default...");
return (Persona p)->{
return testear(p) || filtro.testear(p);
};
}
}
提前谢谢!
异常代码,但or
在这里不是关键字或连词。这是一个方法名称。它也可以被称为test_with_or
。代码:
public Filter or (Filter filtro) {
// ...
}
更常见的写法是(没有令人困惑的空白(:
public Filter or(Filter filtro) {
// ...
}
意味着or
是一个方法,它取一个Filter
,它返回一个Filter
。想象一下,它写为:
public Filter test_with_or(Filter filtro) {
// ...
}