Re: Dynamic execution of a string as a java statement
GreenMountainBoy wrote:
On Feb 27, 10:47 pm, "David Orriss Jr" <codethou...@gmail.99999.com>
wrote:
On 2/27/2007 2:18:31 PM, "GreenMountainBoy" wrote:
I need to build up a string that represents a java statement and then
execute it. Does anyone know how?
Thanks so much,
GreenMountainBoy
Just an FYI: You're potentially opening yourself up to a SQL-injection attack
depending on how you're going to modify that string prior to calling it.
Maybe you could tell a bit more about what you're trying to do. Then a better
solution might come from that discussion.
--
"My first thought was, he lied in every word,
That hoary cripple, with malicious eye
Askance to watch the working of his lie"
- Browning
Thanks for the answer. I want to use getName() to obtain the name of a
running thread (for example: "jTextField1") and then append a string
such as ".setText("xyz")" to the thread name, and then execute the
statement dynamically.
GMB
Reflection is your best bet here, but it's not going to what you want it
to do. Here is an example that best meets your needs:
public class Foo {
private JTextField jTextField1;
public void bar() throws Exception { // Reflection is messy
String name = Thread.currentThread().getName();
// Use null instead of this if the field is static
Object lhs = Foo.class.getField(name).get(this);
// This assumes you're using Java 1.5 + varargs
// If not, you're going to need to make arrays
Method rhs = lhs.getClass().getMethod("setText", String.class);
// Same thing goes as for the last line
rhs.invoke(lhs,"xyz");
}
}
Note that the left-hand side must be a field (static or instance) of a
class, and that the field and method must be visible to the method
you're doing this in. There are several exceptions that could be thrown
that you'd have to catch:
java.lang.IllegalAccessException
java.lang.IllegalArgumentException
java.lang.reflect.InvocationTargetException
java.lang.reflect.NoSuchMethodException
java.lang.reflect.NoSuchFieldException
Hope this helps...