可以在java中获取变量的名称和/或类型吗?
在我的应用程序中,如果可能的话,我想打印一个变量的值和名称 例如:可以在java中获取变量的名称和/或类型吗?,java,Java,在我的应用程序中,如果可能的话,我想打印一个变量的值和名称 例如: int testinteger = 0; String type = > type of testinteger? (int); String name = > name of testinteger? (testinteger); System.out.println("The "+type+" "+name+" has a value of"+ testinteger); 所以我想读一下:int testi
int testinteger = 0;
String type = > type of testinteger? (int);
String name = > name of testinteger? (testinteger);
System.out.println("The "+type+" "+name+" has a value of"+ testinteger);
所以我想读一下:int testinteger的值是0
不幸的是,我想,对于基元类型是不可能的。但是像
String
、Integer
、Boolean
等类型也是这样吗。?是否有可能获取它?获取变量名很困难,但如果使用整数
而不是整数
,则可以执行以下操作:
Integer testInteger = 1;
String type = testInteger.class.getName();
System.out.println(type);
如果你坚持使用类而不是原语,你可以利用类的文字——也就是每个对象的
.class
变量;但是,您可以使用映射
以非动态方式执行此操作。键是类型+变量名(您必须硬编码),值是与这些变量相关联的实际值(当然是字符串形式) 你真的应该解释一下你为什么要回答这个问题。@Curtos我不认为这是一个重复的问题。在这个问题中,所讨论的本地标识符在作用域中,并且仅在作用域中使用。基本上,它是问是否有可能做nameOf identifier->String
或typeOf identifier->TypeOrClass
@RichardJPLeGuen我认为这更接近于重复,但这个问题的前提仍然取决于“反射”。如果Java确实支持这样的nameOf/typeOf
操作符(它不支持),那么它们将对编译时信息进行操作,并且独立于反射(很像obj.class
)。