gpt4 book ai didi

java - 程序代码中如何使用String引用字段

转载 作者:行者123 更新时间:2023-11-29 07:49:42 32 4
gpt4 key购买 nike

我有一个带有各种 ID 常量的程序,例如

final int MN=8;
final int PY=58;
final int RB=13;
...

这些costants是矩阵中元素的索引,由于各种原因难以解释,如果我能做一个接收两个字符串的方法会很好

Object getElement("MN","PY"){
...
}

表现得像

 Object o=mymatrix[MN][PY];

使用传递的字符串来引用声明的字段

有什么方法可以直接访问这些字段(无需将它们放入 Map 或对每个字段使用 switch 和 if else 条件)?

最佳答案

下面是如何使用反射执行此操作的示例。

public class Matrix {
private Object[][] values = new Object[100][100];
private final int MN=8;
private final int PY=58;
private final int RB=13;

public static void main(String[] args){
Matrix matrix = new Matrix();
matrix.values[8][58] = "Hello";
try {
System.out.println(matrix.getElement("MN","PY"));
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
}

}

public Object getElement(String rowConstant, String columnConstant)
throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException {
return values[getConstant(rowConstant)][getConstant(columnConstant)];
}

private int getConstant(String constant)
throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException {
return getClass().getDeclaredField(constant).getInt(this);
}
}

看看如何在 main 方法中,我将一个对象放入数组中,然后使用反射来检索它。

我完全不推荐这种技术。我只是把这个答案放在这里,因为你特别要求我。我真的认为你的做法是错误的。

如果您有少量常量,您应该使用 HashMap 或一些类似的结构。如果你真的有 617 个,你应该使用某种数据文件、属性文件或数据库。您绝不会想让一长串常量成为您的源代码的一部分。

关于java - 程序代码中如何使用String引用字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22213401/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com