我想動態讀取字串陣列常量的值。
常量類具有汽車的字串陣列。NeedValueOf 將動態附加常量名稱,即常量。需要值
告訴我動態獲取價值的方法,在獲取物件后,我想從該物件中獲取價值。我想在我的方法中獲取所有字串陣列值,以便我可以迭代和訪問字串汽車名稱
Class Constants{
Private final static String[] car ={"Honda","Toyota", "Volkswagen"};
}
Class Main{
Public static void main(){
String needValueOf ="car";
Constants.class.getDeclaredFields(needValueOf).get(null);
}
}
It is providing : [Ljava.lang.String;@47483]
uj5u.com熱心網友回復:
由于陣列是一個常量,只需將陣列設為公開并按名稱訪問即可。
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。它甚至不應該是可修改的。所有訪問都應通過方法進行控制。這樣,您就可以控制在類之外傳遞的內容(即地圖的副本)。
uj5u.com熱心網友回復:
[Ljava.lang.String;@47483只是toString在一個String[].
您正在正確檢索該值。
要使用它,請執行以下操作:
public class App {
private static final String[] car = {"Honda", "Toyota", "Volkswagen"};
public static void main(String... args) throws NoSuchFieldException, IllegalAccessException {
String needValueOf = "car";
String[] xs = (String[]) App.class.getDeclaredField(needValueOf).get(null);
System.out.println(xs);
for (String x : xs) {
System.out.println(x);
}
}
}
列印:
[Ljava.lang.String;@41629346
Honda
Toyota
Volkswagen
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/383176.html
下一篇:在R中的最后一個日期之后提取文本
