findbugs错误提示为Non-transient non-serializable instance field in serializable class

baidu_35644344 2016-07-19 10:56:50
使用FindBugs后 错误提示为Non-transient non-serializable instance field in serializable class,应该如何清除这个BUG,求大神指导
...全文
1531 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
baidu_35644344 2016-07-19
  • 打赏
  • 举报
回复
但是加上关键字transient后,代码报错。我把代码贴出来,帮忙看下怎么解决吧 public abstract class OnClickInputPasswordButtonListener implements DialogInterface.OnClickListener, Parcelable { private Activity activity; private View layout; private static final String TAG_DIALOG = "password_confirm_dialog"; OnClickInputPasswordButtonListener(Activity activity, View layout){ this.activity = activity; this.layout = layout; } @Override public void onClick(DialogInterface dialog, int which) { TextView warningMessageText = (TextView)layout.findViewById(R.id.textViewToShortCharacters); EditText passwordText = (EditText)layout.findViewById(R.id.editTextToSettingPassword); EditText confirmPasswordText = (EditText)layout.findViewById(R.id.editTextToConfirmPassword); String password = passwordText.getText().toString(); String confirmPassword = confirmPasswordText.getText().toString(); if (!PasswordController.validatePassword(password)) { setDialogLayout(warningMessageText, passwordText, confirmPasswordText, R.string.warning_message_length); return; } if (!password.equals(confirmPassword)) { setDialogLayout(warningMessageText, passwordText, confirmPasswordText, R.string.warning_message_identify); return; } dialog.dismiss(); ConfirmPasswordDialog confirmPasswordDialog = new ConfirmPasswordDialog(); confirmPasswordDialog.setPassword(password); confirmPasswordDialog.show(activity.getFragmentManager(), TAG_DIALOG); } void setDialogLayout(TextView warningMessageText, EditText passwordText, EditText confirmPasswordText, int warningMessageId) { warningMessageText.setText(warningMessageId); warningMessageText.setVisibility(View.VISIBLE); passwordText.setText(""); confirmPasswordText.setText(""); } }
_Programmer_ 2016-07-19
  • 打赏
  • 举报
回复
如果程序试图存储一个Serializable接口的对象就会引起NotSerializableException异常。另外,如果一个对象是Serializable的实例,但它包含一个非序列化的数据域,该对象也不是可序列化的,为了使该对象是可序列化的,需要给这些数据与加上关键字transient,告诉java虚拟机将对象写入对象流时忽略这些数据域。 示例代码如下: public class Student implement Serializable{ int id; String name; int age; transient A v3=new A(); static int count; } class A{}

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧