24283
+ − 1
/*
+ − 2
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ − 3
*
+ − 4
* Redistribution and use in source and binary forms, with or without
+ − 5
* modification, are permitted provided that the following conditions
+ − 6
* are met:
+ − 7
*
+ − 8
* - Redistributions of source code must retain the above copyright
+ − 9
* notice, this list of conditions and the following disclaimer.
+ − 10
*
+ − 11
* - Redistributions in binary form must reproduce the above copyright
+ − 12
* notice, this list of conditions and the following disclaimer in the
+ − 13
* documentation and/or other materials provided with the distribution.
+ − 14
*
+ − 15
* - Neither the name of Oracle nor the names of its
+ − 16
* contributors may be used to endorse or promote products derived
+ − 17
* from this software without specific prior written permission.
+ − 18
*
+ − 19
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ − 20
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ − 21
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ − 22
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ − 23
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ − 24
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ − 25
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ − 26
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ − 27
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ − 28
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ − 29
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ − 30
*/
+ − 31
+ − 32
// nashorn allows you treat every Java8 lambda as a function
+ − 33
+ − 34
var JFunction = Java.type("java.util.function.Function");
+ − 35
var obj = new JFunction() {
+ − 36
apply: function(x) {
+ − 37
print(x + ", lambda");
+ − 38
}
+ − 39
};
+ − 40
+ − 41
// prints 'function'
+ − 42
print(typeof obj);
+ − 43
+ − 44
// call it!
+ − 45
obj("hello");