「java取变量名称」java中的变量名称
今天给各位分享java取变量名称的知识,其中也会对java中的变量名称进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java 中怎么获得以该字符串命名的变量
- 2、java 如何获取变量的名字
- 3、java如何通过代码获取局部变量名称?
- 4、java 怎么获得变量名(不用反射机制)
- 5、java中怎样获取变量名?(主函数中定义的);
java 中怎么获得以该字符串命名的变量
实现以上场景,在java中有多种方法,最直接方式的是通过反射获取,但是反射有较大的性能损耗,一般不建议用在运行阶段反射,大多开源框架是在初始化的时候通过反射来实例化。
1、通过反射获取
package test;
import java.lang.reflect.Field;
public class Demo2 {
public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException {
String op = "strA";
Test t = new Test();
// /通过类的字节码得到该类中声明的所有属性,无论私有或公有
Field strs = Test.class.getDeclaredField(op);
// 设置访问权限(这点对于有过android开发经验的可以说很熟悉)
strs.setAccessible(true);
// 得到私有的变量值
String[] as = (String[]) strs.get(t);
System.out.println(as.length);
}
}
class Test {
private String[] strA = new String[]{"a","b","c"};
private String[] strB = new String[]{"d","e","f"};
}
2、通过map设置获取
package test;
import java.util.HashMap;
import java.util.Map;
public class Demo2 {
public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException {
MapString,String[] map = new HashMapString,String[]();
map.put("strA", new String[]{"a","str","c"});
map.put("strB", new String[]{"d","e","f"});
String op = "strB";
String result = map.get(op)[0]; // "d"
}
}
以上两种方法虽然都能实现需求,但是在实际情况中还是得看具体的情况来界定选择。
java 如何获取变量的名字
临时变量没办法获取,如果要用到这样的变量,可以定义一个特定的类。
类变量的话可以用反射获取
java如何通过代码获取局部变量名称?
Java中获得变量名可以通过类实例化,形如:ClassTest cl = new ClassTest();cl.l;来获得局部变量名为l的变量。 局部变量一般是在for循环语句中使用,在代码片段执行完之后,变量便会被回收,失去引用。
java 怎么获得变量名(不用反射机制)
这个估计用反射也做不到…
int
name,然后getName(name)是将name的值传给了getName函数,没有传引用。
可以反查,getName(5)又name=5,所以得到“name”;但是如果int
name=5;
int
version=5;那么getName(5)就不唯一了。
所以你的设想实现不了。
有一种实现机制是:
name作为属性有getter和setter,在getter中触发事件广播送出变量名称,这样外界就可以得到这个名字。
目前Java还不支持这种机制:
int
name
{
getter:
function()
{
broadcast
("name");
return
value;}
setter:
function(newval)
{value
=
newval;}
};
要想实现,需要改造
虚拟机
,用JNI写Native方法实现,或者用Java写模拟器模拟也可以。
java中怎样获取变量名?(主函数中定义的);
对于局部变量是不可能的,因为变量名不是程序运行的必要部分,变量名在编译的时候就去除了。
对于成员变量,可以参见[1],使用Fields.getName() 获取
在编译Java的时候加上-g选项可以保留变量名,但这只用于调试。关键看你怎么用这个“变量名”了.如果你的情况和[2]一样,不妨编程的时候换个思路。
[1]
[2]
java取变量名称的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java中的变量名称、java取变量名称的信息别忘了在本站进行查找喔。
发布于:2022-12-21,除非注明,否则均为
原创文章,转载请注明出处。