Jared
Jared

Reputation: 6090

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

Upvotes: 0

Views: 449

Answers (3)

gshauger
gshauger

Reputation: 745

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

Upvotes: 0

Peter Lawrey
Peter Lawrey

Reputation: 533890

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.

Upvotes: 0

Joachim Sauer
Joachim Sauer

Reputation: 308269

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.

Upvotes: 3

Related Questions