【发布时间】:2017-06-09 07:53:53
【问题描述】:
abstract class QuadPredicate<T,R, U,V> implements Predicate<T> {
public abstract boolean test(final T t, final R r, final U u,final V v );
public boolean test(Object t) {
throw new UnsupportedOperationException();
}
}
为什么下面的语句给了我这个表达式的目标类型必须是函数接口
QuadPredicate<String ,String , String ,String > q = (String i, String j, String k,String l) -> {return i.equals(j);};
但以下版本有效:
QuadPredicate<Object ,Object , String ,String > q =
(QuadPredicate<Object, Object, String,String>)new ScriptEngineManager().getEngineByName("nashorn").eval(
"new com.test.QuadPredicate(function(obj, obj2, obj3,obj4) obj.equals(obj2))");
System.out.println(">>>>" + q.test("A", "A", null, null)); //gives true
【问题讨论】: