所以xstream(v1.4.8)有这一行
private class ListenChange extends BroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
if(intent.getAction().equals(ConversationListActivityNew.action_change))
{
if(is_activity_visible) {
if (uri != null&&adapter!=null) {
// adapter =null;
// adapter = new MessageAdapterNew(MessageListActivityNew.this, uri, searched_text);
// setListAdapter(adapter);
new AsyncTask<Void,Void,Void>()
{
@Override
protected Void doInBackground(Void... voids) {
adapter.getData(MessageListActivityNew.this,uri);
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
Log.e("notifying row","notifying row");
MessageListActivityNew.this.adapter.notifyDataSetChanged();
super.onPostExecute(aVoid);
}
}.execute();
}
}
}
}
}
https://cwiki.apache.org/confluence/display/Hive/Tutorial#Tutorial-Dynamic-PartitionInsert
试图到达名为&#34; list&#34;的字段(field.getName()返回&#34; list&#34;)
private Object More ...readField(ObjectStreamField field, Class type, Object instance) {
try {
Field javaField = type.getDeclaredField(field.getName());
在more here中声明,但遇到NoSuchFieldException。那是为什么?
答案 0 :(得分:0)
ObjectStreamField
描述了存储在序列化流中的字段。虽然默认机制将为类的每个实例字段创建ObjectStreamField
,但是通过static final ObjectStreamField[] serialPersistentFields
字段覆盖它的可能性恰好是为了声明执行 not 匹配实际的实例字段。
这些字段无法通过反射读取和写入字段值的默认算法进行处理。相反,需要专用的writeObject
和readObject
方法来读取和写入流字段并处理它们的值。
这里的问题是类VirtualFilePermissionCollection
有一个不匹配的字段声明,因为流字段名为list
,实际的实例字段名为permissions
,并且是一个合适的{ {1}}方法(尽管不必使用Reflection来访问其字段)但缺少匹配的readObject
方法。由于缺少专用的writeObject
方法,因此使用默认算法并失败,因为如上所述,字段不匹配。