Dynamic Java Variable Naming

北城余情 提交于 2019-12-20 07:21:09

问题


This question is more for furthering my knowledge than anything...

Does Java have anything similar to PHP's ability to generate a variable name? I have an SCJA Cert and I'm studying for the SCJP and have never seen this, but was curious.

PHP Example

$application->{$request->getParameter("methodCall")}($request->getParameter('value'));

Does Java have anything similar? I've been reading on here and the general answer is to use a HashMap which I'm not interested in since this isn't to solve a real problem. I'm more interested in the is this possible solution? If not so be it, but just trying to expand my knowledge!

Thanks, Jared


回答1:


No, variables (fields and local variables) are statically "created" at compile-time in Java.

Of course memory is only ever occupied at runtime, but how many and which fields an object has is decided at compile-time.

Therefore you can't "dynamically add a field" in Java.

And yes: A Map is the solution to the problem. "Adding a field" is not usually the problem but an attempted solution that's appropriate for some languages (usually dynamic ones) and inappropriate for others.




回答2:


I think you mean a field in a class. A local variable can only be used in a method.

To generate a field in a class or a variable, you need to generate Java code and compile it or byte code at runtime. It can be done but is 100x more complicated than using a simple Map. (I have done it dynamically before and I wouldn't recommend it unless you really have to)

If you want to do code generation I would suggest using Objectweb's ASM.




回答3:


This can't be done...Java Reflection only allows you to view the structure of a class but not append to it.



来源:https://stackoverflow.com/questions/5885669/dynamic-java-variable-naming

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!