[英]Class inside a function causing null pointer exception
以下代碼在執行期間導致空指針異常。 它只是說了空指針異常。
當我將hotItem類放在函數之外時,它可以正常工作。
一旦將其放入函數中,將導致空指針異常。
我只想知道為什么會發生這種情況,以及函數內部類的生命周期是什么。
private void getHotItem()
{
Gson gsonAdapter = new Gson();
class hotItem
{
private String hotItemPK = "";
}
Type hotItemType = new TypeToken<List<hotItem>>(){}.getType();
List<hotItem> hotItemList = new ArrayList<hotItem>();
try
{
itemAccess.getHotItemList();
itemAccess.start();
itemAccess.join();
hotItemList = gsonAdapter.fromJson(returnData, hotItemType);
if(!hotItemList.isEmpty())
{
testText.setText(hotItemList.get(0).hotItemPK.toString());
}
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
請在這里檢查問題
解析度:
我猜您在類路徑上同時有gson.jar和gson-stream.jar; 那行不通。
問題在於,在Gson 2.1中,我們有一個自定義版本的JsonReader,它添加了一些秘密的掛鈎以使MapTypeAdatperFactory更快。 這些掛鈎不適用於gson-stream.jar的JsonReader版本。
我想我知道這里可能會發生什么。
問題在於HotItem
是一個內部類,這意味着它對隱含類的實例具有隱式引用。 但是,當gsonAdapter.fromJson
方法嘗試創建List<HotItem>
,它沒有(可能沒有)在其中創建HotItem
的封閉類的實例。 根據創建方式的不同,它可能使用null
引用創建它……這可能是NPE的原因。
如果這(或類似的問題)是問題,那么另一種解決方法是將HotItem
聲明為static
類。
我還應該指出,以小寫字母開頭的類名稱是錯誤的樣式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.