我有一個帶有欄位(字串品牌和名稱、int ram 和 rom)的物件 MobilePhone,我想將其轉換為 Json 字串。我試著這樣做
public static void main(String[] args){
MobilePhone mp = new MobilePhone();
mp.setBrand("iPhone");
mp.setName("X");
mp.setRam(4);
mp.setRom(1);
Gson json = new Gson();
String object = json.toJson(mp);
System.out.println(object);
}
我收到以下錯誤:
執行緒“main”中的例外java.lang.reflect.InaccessibleObjectException:無法公開(包名稱)。MobilePhone()可訪問:模塊(專案名稱)不會“匯出(包名稱)”到java.base/的模塊gson java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:349) 在 java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:289) 在 java.base/java.lang.reflect.Constructor。 checkCanSetAccessible(Constructor.java:189) at java.base/java.lang.reflect.Constructor.setAccessible(Constructor.java:182) at [email protected]/com.google.gson.internal.ConstructorConstructor.newDefaultConstructor(ConstructorConstructor. java:101) 在 [email protected]/com.google.gson.internal.ConstructorConstructor.get(ConstructorConstructor.java:83) 在 [email protected]/com.google.gson.internal.bind。ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:99) at [email protected]/com.google.gson.Gson.getAdapter(Gson.java:423) at [email protected]/com.google.gson.Gson.toJson( Gson.java:661) 在 [email protected]/com.google.gson.Gson.toJson(Gson.java:648) 在 [email protected]/com.google.gson.Gson.toJson(Gson.java: 603) 在 [email protected]/com.google.gson.Gson.toJson(Gson.java:583) 在 IAssessment/application.AddData.main(AddData.java:23) - 這是行字串物件 = json.toJson (mp);main(AddData.java:23) - 這是行 String object = json.toJson(mp);main(AddData.java:23) - 這是行 String object = json.toJson(mp);
請幫忙
uj5u.com熱心網友回復:
如錯誤所示,包含MobilePhone該類的模塊不會匯出包含 的包MobilePhone,因此它在其自己的模塊之外不可見。(或者如果它被匯出,它只會被匯出到 gson 以外的一些模塊。)通常這意味著您必須exports向模塊描述符檔案添加一個指令,如下所示:
exports <pkg-name> to gson;
但是由于 gson 廣泛使用反射,可能您需要更進一步,為 gson 提供包的私有和反射訪問。為此,請opens向模塊描述符檔案中添加一條指令:
opens <pkg-name> to gson;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/398272.html
