JDK新特性1.pptVIP

  • 26
  • 0
  • 约1.99万字
  • 约 66页
  • 2017-05-28 发布于上海
  • 举报
JDK新特性1ppt课件

MethodHandle的bindTo方法只是绑定方法句柄的第一个参数,并不要求这个参数一定表示方法调用的接收者。 对于一个MethodHandle,可以多次使用bindTo方法来为其中的多个参数绑定值。 package com.methodhandle; import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodType; public class ParameterBind2 { public void multipleBindTo() throws Throwable { MethodHandles.Lookup lookup = MethodHandles.lookup(); MethodHandle mh = lookup.findVirtual(String.class, indexOf, MethodType.methodType(int.class,String.class,int.class)); mh = mh.bindTo(Hello).bindTo(l); System.out.println(mh.invoke(2)); } * * * * * * * * * * * * * * package com.li; public interface Greet { public String getGreeting(String name); } * * * * * * * * * * * * * * public void attributeInBindings() throws ScriptException { ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName(JavaScript); ScriptContext context = engine.getContext(); context.setAttribute(name, Ajax, ScriptContext.GLOBAL_SCOPE); engine.eval(println(name);); } 不直接操作语言绑定对象本身,而是通过ScriptContext的setAttribute来向语言绑定对象中添加数据。所添加的数据在脚本执行时也同样是可见的。代码如下: 脚本语言一般是解释执行的。脚本引擎在运行时需要先解释脚本之后再执行。 一般来说,通过解释执行的方式来运行脚本比编译后再运行速度慢些。 对脚本进行编译,再执行,会提高执行效率。不是所有脚本执行引擎都支持对脚本进行编译。如果脚本引擎支持这一特性,它会实现javax.script.Compilable接口来声明这一点。 public CompiledScript compile(String scriptText) throws ScriptException { ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName(JavaScript); if (engine instanceof Compilable) { CompiledScript script = ((Compilable) engine).compile(scriptText); return script; } return null; } public void run(String scriptText) throws ScriptException { CompiledScript script = compile(scriptText); if (script == null) { return; } for (int i = 0; i 100000; i++) { script.eval(); } } 有些脚本引擎允许使用者单独调用脚本中的某个方法。支持这种方法调用方式的脚本引擎可以实现javax.script.Invocable接口。 通过Invocable接口可以调用脚本中的顶级方法,也可以调用对象中的成员方法。如果脚本中的顶层方法或对象中的成员方法实现了java中的接口,可以通过Invocable接口中的方法来获取脚本中的相应的java接口的实现对象。这样就可以在java语言中定义接口,在脚本中实现接口。程序中使用该接口的其他部分并不知道接口是

文档评论(0)

1亿VIP精品文档

相关文档