通过String获取实例化对象

use*_*447 5 java string field object

是否有可能在运行时通过字符串获取在代码中实例化的对象?

这样的事情:

public String xyz = "aaaa_bbb";

getObject("xyz").some function of String (e.g.: .split("_"))
Run Code Online (Sandbox Code Playgroud)

谢谢

Bal*_*a R 6

这是一个例子

如果它是一个类字段,你可以像这样按名称获取它.

import java.lang.reflect.Method;


public class Test {


    public String stringInstance = "first;second";

    public void Foo() {


        try {
            Object instance = getClass().getDeclaredField("stringInstance").get(this);
            Method m = instance.getClass().getMethod("split", String.class);

            Object returnValue = m.invoke(instance, ";");
            if(returnValue instanceof String[])
            {
                for(String s : (String[])returnValue )
                {
                    System.out.println(s);
                }
            }

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static void main(String a[]){
        new Test().Foo();
    }



}
Run Code Online (Sandbox Code Playgroud)

如果它是您尝试调用的本地方法变量,那么您可能可以从调用堆栈中获取当前方法中的变量 Thread.currentThread().getStackTrace().