PersistentStore.getPersistentObject
null を返しますか?
PersistentStore からオブジェクトを取得するためにランダム キーを使用しています
persist = PersistentStore.getPersistentObject( KEY );
署名されたコードをデバイス (BB OS 5.0 Bold 8900) に取得すると、シミュレータ (OS 5) で正常に動作します。
何らかの理由で、これは例外なく null を返します。その後、PersistentStore/persist で呼び出した API は、persist が null の場合でも例外なく null を返します。
これがEclipseデバッガーの問題かどうかはわかりませんが、デバッガーはオブジェクトがnullであることを示していますが。コードに適用された Null チェックが失敗したようです。つまり、コードはこれらのオブジェクトを null ではないと見なします。ふう!!!これはどのように可能ですか?
このコードでは、persist が null として表示されます。ただし、コードの null チェックは失敗します。
コードの後半で、orderedkeys にアクセスしようとすると、これらは再び null になります!!! この問題に 2 日間取り組んできました。
persist = PersistentStore.getPersistentObject( KEY );
persistOrderedKeys = PersistentStore.getPersistentObject(KEY_ORDERED_KEYS);
safetyTable = (Hashtable)persist.getContents();
orderedKeys = (Vector)persistOrderedKeys.getContents();
if (safetyTable == null)
{
safetyTable = new Hashtable();
persist.setContents(safetyTable);
persist.commit();
}
if (orderedKeys==null)
{
orderedKeys=new Vector();
if (safetyTable.size() > 0)
{
Enumeration addressKeys = safetyTable.keys();
while(addressKeys.hasMoreElements())
{
orderedKeys.addElement((String)addressKeys.nextElement());
}
}
persistOrderedKeys.setContents(orderedKeys);
persistOrderedKeys.commit();
}