是否有可能在运行时通过字符串获取在代码中实例化的对象?
这样的事情:
public String xyz = "aaaa_bbb";
getObject("xyz").some function of String (e.g.: .split("_"))
谢谢
解决方法:
这是一个例子
如果它是一个类字段,你可以像这样按名称获取它.
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();
}
}
如果它是您尝试调用的本地方法变量,那么您可以从调用堆栈Thread.currentThread().getStackTrace()中获取当前方法中的变量.
标签:java,object,field,string
来源: https://codeday.me/bug/20190521/1149084.html