您可以将@ConversationScoped Bean中的对话接口安全地标记为瞬态(即CDI是否在序列化过程中对其进行处理)还是我需要自定义的read / writeObject?
@ConversationScoped
public class CDIConversationScopedBean implements Serializable {
private static final long serialVersionUID = 1L;
@Inject
private transient Conversation conversation; // <<-- transient ok?
FindBugs抱怨一个非瞬态的不可序列化实例字段。
答案 0 :(得分:0)
TL; DR:是的,这很安全。说明:
由于$firstname = 'Dave';
$middlename = 'Brexit';
$lastname = 'Davis';
$fullname = $firstname . ' ' . $middlename . ' ' . $lastname; // 'Dave Brexit Davis'
类也未实现mapStateToProps
configuration接口,因此静态分析器通常会抱怨所有字段必须为Serializable
或瞬态,即使该类从未明确序列化或反序列化。
首先,您的代码段有点可疑,为什么要实现此标记接口-那么您打算序列化此类吗?您可能要添加生成的或默认的“串行版本” UID。
要解决此问题,如果您不打算对类进行反序列化,请在字段Conversation
中进行设置-这是无害的,并且不会影响transient
的行为。参见Java 8规范Serializable
。
可以将变量标记为瞬态,以表明它们不是对象持久状态的一部分。
如果您计划,请Conversation
实现chapter 8.3.1.3并以相同的方式对待其字段。