java val_Java中是否有val()函数?

4a81435618845680d277b167226d0d73.png

慕尼黑的夜晚无繁华

很少有实际用例能够评估String作为Java代码的一个片段是必要的或可取的。也就是说,询问如何做到这一点实际上是XY问题:你实际上有一个不同的问题,可以用不同的方法来解决。先问问自己,这是怎么回事String你想要评估的是从哪里来的?您的程序的另一部分是生成它,还是由用户提供输入?我程序的另一部分生成了它因此,您需要程序的一部分来决定要执行的操作的类型,而不是执行操作,以及执行所选操作的第二个部分。而不是生成和计算String,使用战略, 命令或建筑商设计模式,视具体情况而定。它是用户输入。*用户可以输入什么都行,包括在执行时可能导致程序行为不当、崩溃、公开应该是机密的信息、损坏持久信息(例如数据库内容)以及其他此类恶意的命令。防止这种情况的唯一方法是解析String你自己,检查它是不是恶意的,然后评估它。但是,自己解析它是所要求的大部分工作。eval函数就行了,所以你什么也救不了自己。更糟糕的是,检查Java不是恶意的不可能,因为检查这是停止问题.它是用户输入,但要计算的允许文本的语法和语义受到很大限制。:没有任何通用工具能够轻松地为您选择的任何受限语法和语义实现通用解析器和评估器。您需要做的是为您选择的语法和语义实现一个解析器和评估器。如果任务很简单,可以编写一个简单的递归下降或者是有限状态机解析器。如果任务很困难,可以使用编译器-编译器(如ANTLR)为您做一些工作。我只想实现一个桌面计算器!家庭作业,嗯?如果可以使用提供的eval功能,这不是一个家庭作业,是吗?你的程序会有三行长。您的老师可能希望您为一个简单的算术解析器/评估器编写代码。有着众所周知的算法,调车场,你可能会觉得有用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值