有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在java中打印数组的名称

我想打印作为字符串参数传递的函数中数组的名称:

public static String[][] cleanCSVtable(String[][] data_table) {}

而不是像这样:

[[Ljava.lang.String;@ba4539 

例如,让我们假设我在main函数之外将这个数组定义为

public static String [][] XYZ = null; 

我想在这个函数中打印XYZ,而不是

[[Ljava.lang.String;@ba4539. 

有什么技巧/提示/想法吗


共 (3) 个答案

  1. # 1 楼答案

    对象没有名称,除非您讨论的是具有name属性的特定类型

    在本例中,XYZ变量的名称,而不是对象。两个(或更多)变量可能引用同一对象。例如:

    String[][] foo = new String[10][50];
    String[][] bar = foo;
    

    听起来您可能需要一个CsvTable类,它包含字符串数组,并且名称有一个单独的变量

  2. # 2 楼答案

    这是不可能的XYZ只是变量名,无法访问。如果您确实依赖于数组内容的一些文本描述,那么可以将其封装在一个类中,该类包含一个名为description或类似的字符串或枚举字段

  3. # 3 楼答案

    乔恩和索瓦是对的。没有常规方法可以找到保存数组的变量名。此外,在您的例子中,它不是基元,因此变量只包含对数组的引用。可能有很多引用指向同一个数组,那么您希望发现哪一个

    但有时还有其他方法可以帮助你。Java字节码包含类字段的名称,所以如果您的变量是在类级别定义的,而不是方法的内部变量,那么您可以自己解析字节码并提取这个名称

    显然,这不是一项简单的任务,但有一些工具可以帮助您。在上周,我玩了一点Javassist,它绝对允许您这样做。您可以发现正在运行的类的字节码,并提取包含对特定数组的引用的字段的名称

    我唯一的问题是“为什么”