由于数组是常量,只需将数组公开并按名称访问即可。
public class Constants{
public final static String[] car ={"Honda","Toyota", "Volkswagen"};
}
public class Main{
public static void main(String[] args){
String[] arr = Constants.car; // access it by name
}
}
不需要使用反射。99.99% 的情况下,反思是你能做出的最糟糕的选择。剩下的时间只是一个糟糕的选择。
如果数组不是常量,您可以提供 getter 方法并创建数组的防御性副本。但根据您的问题,这超出了范围。
更新:
如果“动态”是主要重点,因为有许多数组常量,并且您想通过传递 a 来访问它们String
,那么您只需将它们放在地图中即可。
public class Constants{
private final static String[] cars ={"Honda","Toyota", "Volkswagen"};
private final static String[] boats = {...};
public static Map<String, String[]> myConstants = new HashMap<>();
public Constants () {
myConstants.put("cars", cars);
myConstants.put("boats", boats);
}
}
public class Main{
public static void main(String[] args){
String[] carsArr = myConstants.get("cars");
String[] boatsArr = myConstants.get("boats");
}
}
地图不应该public static
。它甚至不应该是可修改的。所有的访问都应该通过方法来控制。这样,您可以控制在类外传递的内容(即地图的副本)。