实现以上场景,在java中有多种方法,最直接方式的是通过反射获取,但是反射有较大的性能损耗,一般不建议用在运行阶段反射,大多开源框架是在初始化的时候通过反射来实例化。
1、通过反射获取
package test;import javalangreflectField;
public class Demo2 {
public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException {
String op = "strA";
Test t = new Test();
// /通过类的字节码得到该类中声明的所有属性,无论私有或公有
Field strs = TestclassgetDeclaredField(op);
// 设置访问权限(这点对于有过android开发经验的可以说很熟悉)
strssetAccessible(true);
// 得到私有的变量值
String[] as = (String[]) strsget(t);
Systemoutprintln(aslength);
}
}
class Test {
private String[] strA = new String[]{"a","b","c"};
private String[] strB = new String[]{"d","e","f"};
}
2、通过map设置获取
package test;
import javautilHashMap;
import javautilMap;
public class Demo2 {
public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException {
Map<String,String[]> map = new HashMap<String,String[]>();
mapput("strA", new String[]{"a","str","c"});
mapput("strB", new String[]{"d","e","f"});
String op = "strB";
String result = mapget(op)[0]; // "d"
}
}
以上两种方法虽然都能实现需求,但是在实际情况中还是得看具体的情况来界定选择。
通过 super变量名 获取父类中的变量值
举例:
public class Parent{//定义父类Parentpublic int a=1;//定义父类中的一个变量a
}
public class Son extend Parent{//定义子类son,继承父类parent
public void show(){
int b = supera;//通过super访问父类变量a,获取值赋值给b
}
}
以上就是关于java 中怎么获得以该字符串命名的变量全部的内容,包括:java 中怎么获得以该字符串命名的变量、java中怎样获取父类中的变量值、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)