1
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();
}
}
Warum ist unter Anweisung geben mir den Zieltyp dieser Ausdruck mussDer Zieltyp dieses Ausdrucks muss eine funktionale Schnittstelle für das erweiterte Prädikat sein?
QuadPredicate<String ,String , String ,String > q = (String i, String j, String k,String l) -> {return i.equals(j);};
eine funktionale Schnittstelle sein, aber unterhalb Version funktioniert:
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
y Unsere Lösung funktioniert für mich, aber warum funktioniert es mit meiner Version von QuadPredicate mit Nashorn? – Ajeetkumar
@Ajeetkumar Ich kann nicht wirklich sagen, habe nashorn nicht verwendet – Eugene
@Ajeetkumar Nashorn ist eine JavaScript-Engine und JavaScript ist eine andere Programmiersprache mit verschiedenen Regeln ... – Holger