import java.util.* ;
import java.util.function.* ;
@FunctionalInterface
interface VarArgsFunction< T, U> extends Function< T[ ] , U> {
@Override
U apply( T... args ) ;
}
class Main {
public static void main
( String [ ] args
) { invokeApply( ) ;
}
static void invokeApply( ) {
VarArgsFunction
< Double , List
< Double
>> fn
= List< Double> list = invokeApply( fn, 1.0 , 2.0 , 3.0 ) ;
}
static < T, U> U invokeApply( VarArgsFunction< T, U> fn,
T arg0, T arg1, T arg2) {
return fn.apply ( arg0, arg1, arg2) ; // throws an exception
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS51dGlsLmZ1bmN0aW9uLio7CgpARnVuY3Rpb25hbEludGVyZmFjZQppbnRlcmZhY2UgVmFyQXJnc0Z1bmN0aW9uPFQsIFU+IGV4dGVuZHMgRnVuY3Rpb248VFtdLCBVPiB7CiAgICBAT3ZlcnJpZGUKICAgIFUgYXBwbHkoVC4uLiBhcmdzKTsKfQoKY2xhc3MgTWFpbiB7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CgkJaW52b2tlQXBwbHkoKTsKCX0KICAgIHN0YXRpYyB2b2lkIGludm9rZUFwcGx5KCkgewogICAgICAgIFZhckFyZ3NGdW5jdGlvbjxEb3VibGUsIExpc3Q8RG91YmxlPj4gZm4gPQogICAgICAgICAgICBBcnJheXM6OmFzTGlzdDsKICAgICAgICBMaXN0PERvdWJsZT4gbGlzdCA9IGludm9rZUFwcGx5KGZuLCAxLjAsIDIuMCwgMy4wKTsKICAgIH0KICAgIHN0YXRpYyA8VCwgVT4gVSBpbnZva2VBcHBseShWYXJBcmdzRnVuY3Rpb248VCwgVT4gZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVCBhcmcwLCBUIGFyZzEsIFQgYXJnMikgewogICAgICAgIHJldHVybiBmbi5hcHBseShhcmcwLCBhcmcxLCBhcmcyKTsgLy8gdGhyb3dzIGFuIGV4Y2VwdGlvbgogICAgfQp9