非瞬态类成员上的 Java PMD 警告
2022-09-01 06:16:09
在线:
private boolean someFlag;
我收到以下 PMD 警告:
找到非瞬态、非静态成员。请标记为瞬态或提供访问器。
有人可以解释为什么会有这个警告以及它意味着什么吗?(我知道如何修复它,我不明白为什么它在那里...)
我也在许多其他成员声明中得到这个...
编辑:我的类绝对不是豆子,也不是可序列化的...
在线:
private boolean someFlag;
我收到以下 PMD 警告:
找到非瞬态、非静态成员。请标记为瞬态或提供访问器。
有人可以解释为什么会有这个警告以及它意味着什么吗?(我知道如何修复它,我不明白为什么它在那里...)
我也在许多其他成员声明中得到这个...
编辑:我的类绝对不是豆子,也不是可序列化的...
我假设你的类是一个bean,根据定义实现。将从序列化过程中排除瞬态变量。如果序列化然后反序列化 Bean,则该值实际上将具有默认值。Serializable
PMD 假设您在此处处理的是可序列化的 Bean。对于 Bean,它应该具有所有成员变量的 getters/setter。由于您省略了这些,因此您暗示您的成员变量不是bean的一部分....因此不需要序列化。如果是这种情况,则应将其从序列化中排除。通过将变量标记为“瞬态”来执行此操作。
现在我明白了。
添加此定义后:
private boolean someFlag;
...很明显,这里发生了什么:
此错误消息确实引用了访问架构。PMD 指出,bean 引用的类也必须遵循 Bean 模式。
最有可能支持属性样式访问的将转换为MyBean.referredClass.someFlag
someObject.getReferredClass().getSomeFlag()
PMD 它期望有一个和方法,您可以通过该方法访问其值,而不是直接访问它。isSomeFlag/getSomeFlag
setSomeFlag
Found non-transient, non-static member. Please mark as transient **or provide accessors**.