在MVEL中的实例化对象上运行代码 朋友,考虑下面的代码: import java.lang.reflect.InvocationTargetException; import java.util.HashMap; import java.util.Map; import org.mvel2.templates.TemplateRuntime; public class Foo { private final String firstName; public Foo(String firstName) { this.firstName = firstName; } public String getName() { return "Mr. " + firstName + " Foo"; } public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { String prefix = "@code{ def getName() { a.getName() } }"; String template = "Hello, my name is @{getName()}"; Map<String, Object> vars = new HashMap<>(); Foo f = new Foo("William"); vars.put("a", f); Object output = TemplateRuntime.eval(prefix + template, vars); System.out.println(output); } } import java.lang.reflect.InvocationTargetException; 导入java.util.HashMap; 导入java.util.Map; 导入org.mvel2.templates.TemplateRuntime; 公开课Foo{ 私有最终字符串名; public Foo(字符串名){ this.firstName=firstName; } 公共字符串getName(){ 返回“先生”+“姓氏”+“富”; } 公共静态void main(字符串[]args)抛出NoSuchMethodException, IllegalAccessException,IllegalArgumentException, 调用目标异常{ 字符串前缀=“@code{def getName(){a.getName()}”; String template=“你好,我的名字是@{getName()}”; Map vars=newhashmap(); Foo f=新Foo(“威廉”); 变量put(“a”,f); 对象输出=TemplateRuntime.eval(前缀+模板,变量); 系统输出打印项次(输出); } }

在MVEL中的实例化对象上运行代码 朋友,考虑下面的代码: import java.lang.reflect.InvocationTargetException; import java.util.HashMap; import java.util.Map; import org.mvel2.templates.TemplateRuntime; public class Foo { private final String firstName; public Foo(String firstName) { this.firstName = firstName; } public String getName() { return "Mr. " + firstName + " Foo"; } public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { String prefix = "@code{ def getName() { a.getName() } }"; String template = "Hello, my name is @{getName()}"; Map<String, Object> vars = new HashMap<>(); Foo f = new Foo("William"); vars.put("a", f); Object output = TemplateRuntime.eval(prefix + template, vars); System.out.println(output); } } import java.lang.reflect.InvocationTargetException; 导入java.util.HashMap; 导入java.util.Map; 导入org.mvel2.templates.TemplateRuntime; 公开课Foo{ 私有最终字符串名; public Foo(字符串名){ this.firstName=firstName; } 公共字符串getName(){ 返回“先生”+“姓氏”+“富”; } 公共静态void main(字符串[]args)抛出NoSuchMethodException, IllegalAccessException,IllegalArgumentException, 调用目标异常{ 字符串前缀=“@code{def getName(){a.getName()}”; String template=“你好,我的名字是@{getName()}”; Map vars=newhashmap(); Foo f=新Foo(“威廉”); 变量put(“a”,f); 对象输出=TemplateRuntime.eval(前缀+模板,变量); 系统输出打印项次(输出); } },java,mvel,Java,Mvel,我想知道是否可以添加一个实例化对象,这样就不需要a.。上述代码中的解决方法是将实例方法调用包装到另一个方法中,但这相当笨拙 任何帮助或建议都将不胜感激:)

我想知道是否可以添加一个实例化对象,这样就不需要
a.
。上述代码中的解决方法是将实例方法调用包装到另一个方法中,但这相当笨拙

任何帮助或建议都将不胜感激<代码>:)