java词法解析器_向Java解析器/词法分析器发出指令

您所描述的内容(在运行时创建新的命名变量)可以在JavaScript,Lua,Bash等解释语言中使用,但不能使用像Java这样的编译语言。执行循环时,没有源代码可以操作,所有命名变量都必须先定义。

除此之外,你的变量不需要一个“唯一”的名字,如果你按顺序使用它们(一个接一个),你也可以这样写你的循环:

while (someArbitrarySet.hasNext()) {

SomeClass sC = new SomeClass();

sC.callSomeMethod();

}如果您确实需要同时使用对象,请将它们放在某种数据结构中。最简单的是数组,你可以使用Collection(如ArrayList)或Map(如CajunLuke写的),如果你想通过键再次找到它们。

事实上,一个数组(在Java中)只不过是一个变量集合(所有相同的类型),你可以用int索引。

(并且允许在运行时创建新变量的脚本语言也使用某种地图字符串→(任何东西)实现这一点,其中此映射是方法/脚本本地或属于某些周围对象。)

您在对问题的评论中写道(更好地将这些内容添加到问题本身,它有一个“编辑”按钮):

Without getting into too many details, I'm writing an application that runs within a larger program. Normally, the objects would get garbage-collected after I was done with them, but the larger program maintains them, thus the need for a unique name for each. If I don't give each a unique name, the old object will get overwritten, but it is still needed in the context of the greater program.

那么,你想保留对象以避免垃圾收集?使用数组(或List或其他任何东西)。

问题是,如果你希望你的大型程序能够使用这些对象,你无论如何都必须将它们交给这个更大的程序。然后这个程序必须保留对这些对象的引用,从而避免垃圾收集。所以它看起来你想通过不存在的方式解决一个不存在的问题:-)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值