简体   繁体   中英

Dynamic Java Variable Naming

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

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.

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 .

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM