java中怎样获取变量名(主函数中定义的);

java中怎样获取变量名(主函数中定义的);,第1张

对于局部变量是不可能的,因为变量名不是程序运行的必要部分,变量名在编译的时候就去除了。

对于成员变量,可以参见[1],使用FieldsgetName() 获取

在编译Java的时候加上-g选项可以保留变量名,但这只用于调试。关键看你怎么用这个“变量名”了如果你的情况和[2]一样,不妨编程的时候换个思路。

[1]>

反射:在运行状态下,通过class文件对象,去使用构造方法,成员变量,成员方法

方法有三种:

1类名class

2对象getclass()

3classforName("包名类名")

好处:

只要有一个类或者一个类的对象,就可以得到这个类或对象的所有属性和方法,包括私有的

同步方法

反射成员方法:

1获取字节码文件

Class c = ClassforName("包名类名");

2反射方法

Method m = cgetMethod("反射的方法",方法的参数类型class);

3用方法,minvoke(对象,参数) 对象,cnewInstance ,在A建立对象。

minvoke(cnewInstance(),参数);

类加载器与反射有什么关系

反射是通过字节码文件对象,将类的字段,方法,构造器等映射成相应的类,并进行各自的 *** 作;

类加载器是通过某个类的classLoader()方法,将该类的class文件从硬盘中加载到java虚拟机中,形成字节码文件;

class b {

 private String aa = "hello";

 private String bb = "world";

 private String cc = "xxx!";

}

public class a {

 public static void main(String[] args) throws ClassNotFoundException,

   IllegalArgumentException, IllegalAccessException,

   InstantiationException {

  Class c = ClassforName("b");

  Field[] fs = cgetDeclaredFields();

  Map map = new HashMap();

  for (int i = 0; i < fslength; i++) {

   Field f = fs[i];

   fsetAccessible(true);

   mapput(fgetName(), fget(cnewInstance()));

  }

  Systemoutprintln(map);

 }

}

结果:

以上就是关于java中怎样获取变量名(主函数中定义的);全部的内容,包括:java中怎样获取变量名(主函数中定义的);、java 怎么获得变量名(不用反射机制)、反射是什么反射获取字节码文件的三种方式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9446044.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存