java - 如何动态显示数组

标签 java

公开课地球仪

public static int line1[] = {1,4,7,10,13};
public static int line2[] = {1,5,7,11,13};
public static int line2[] = {1,5,7,11,13};

公开课测试

for(i=0;i<3;i++)
{
   String temp = "line"+i;
   System.out.println(globe.temp);// how to get array hole value
}

如何获取globe类中的数组值?我需要从给定行号的 for 循环中获取特定的数组值。

最佳答案

在代码的当前状态下,这需要反射。但是,如果您需要做这样的事情,也许 Globe 类的设计一开始就不正确

如果您想按照向我们展示的方式使用它们,则需要在代码中表达行之间的链接。使用二维数组怎么样?

public static final int[][] lines = {
    {1,4,7,10,13},
    {1,5,7,11,13},
    {1,5,7,11,13}
};

然后这样使用它:

for (int[] line : Globe.lines) {
    System.out.println(Arrays.toString(line));
}

Note that the Globe class name should be capitalized, to be consistent with Java conventions.


为了举例说明,以下是在您无法控制 Globe 类的情况下如何使用反射实现此目的:

for (int i = 0; i < 3; i++) {
    String fieldName = "line" + i;
    Field lineField = Globe.class.getDeclaredField(fieldName);
    int[] line = lineField.get(null); // null for static fields
    System.out.println(Arrays.toString(line));
}

关于java - 如何动态显示数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33581417/

相关文章:

Java 矩阵乘法 ArrayIndexOutOfBounds 异常

java - 检测ajax请求调用

java - BST 交集、NullPointerException

java - 如何修复 "Call to getEmbeddedPicture failed"异常?

java - 如何在 Java 中实现命令模式?

java - 病毒扫描可以关闭 java TCP 套接字连接吗?

java - 或者同时使用 "like"和 "line break"和 "case insensitive"从 java 查询 mongodb

java - 测试所需的运行时参数、Spring Boot、配置路径

java - 使用 vaadin 7.3 和 valo 主题编译我的主题时出错

java - Jackson JsonParser 获取数组 token