eval()在Java中的实现
我的问题与Java中函数eval()不存在的现象有关。在互联网上读了一会儿之后,我发现我能做的最好的事情就是创建我自己的解析器作为Java函数。但如何做到这一点呢?实际上我需要的是一个函数,它读取上述数组的第一列,然后一个接一个地返回所有这些值。但是请注意,这些值是存储在字符串数组中的字符串,因此是字符串,但它们表示不同类型的对象,例如X1、X2、X3、X3等 如果我设法将这个字符串值(比如x1)作为对象(比如x1)读取,那么我就能够使用它来调用一些与对象x1相关的函数,比如x1.classifyInstance(等等) 希望这里有人知道如何解决这个问题eval()在Java中的实现,java,eval,Java,Eval,我的问题与Java中函数eval()不存在的现象有关。在互联网上读了一会儿之后,我发现我能做的最好的事情就是创建我自己的解析器作为Java函数。但如何做到这一点呢?实际上我需要的是一个函数,它读取上述数组的第一列,然后一个接一个地返回所有这些值。但是请注意,这些值是存储在字符串数组中的字符串,因此是字符串,但它们表示不同类型的对象,例如X1、X2、X3、X3等 如果我设法将这个字符串值(比如x1)作为对象(比如x1)读取,那么我就能够使用它来调用一些与对象x1相关的函数,比如x1.classif
编辑:这个帖子与我的第一篇帖子紧密相连 要能够在Java中对对象调用方法,您需要该对象的实例,并且需要使用适当的类型声明一个变量。唯一的其他方法是使用反射来调用该方法。Java不像JavaScript:它是强类型的,没有duck类型 您可能应该做的是让所有这些对象实现一个公共接口:
public interface Classifyable {
void classify();
}
并使用以下代码(您需要处理异常,但我省略了它们):
for(字符串s:stringArray){
//s是要实例化的对象的类名,对吗?
clazz类=Class.forName类;
Classifyable c=(Classifyable)clazz.newInstance();//调用无参数构造函数
c、 分类();
}
要能够在Java中对对象调用方法,您需要该对象的实例,并且需要使用适当的类型声明一个变量。唯一的其他方法是使用反射来调用该方法。Java不像JavaScript:它是强类型的,没有duck类型
您可能应该做的是让所有这些对象实现一个公共接口:
public interface Classifyable {
void classify();
}
并使用以下代码(您需要处理异常,但我省略了它们):
for(字符串s:stringArray){
//s是要实例化的对象的类名,对吗?
clazz类=Class.forName类;
Classifyable c=(Classifyable)clazz.newInstance();//调用无参数构造函数
c、 分类();
}
您可以使用类的方法将字符串作为javascript字符串计算
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
Object result = engine.eval("4*5");
System.out.println("..result..."+String.valueOf(result));
Result=。Result…20.0
您可以使用类的方法将字符串作为javascript字符串计算
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
Object result = engine.eval("4*5");
System.out.println("..result..."+String.valueOf(result));
Result=
。Result…20.0
自行构建Java编译器是一项艰巨的工作。基本上有三种选择:
自己构建Java编译器是一项艰巨的工作。基本上有三种选择:
你真正想要的。。。请说得更准确些…听起来你在这里寻找一些选择,也许在这里你真正想要的。。。请说得更准确些……听起来你好像在这里寻找一些选择,也许在这里