findbugs 报告了这些关于我的项目代码的错误。
class channelBean defines non-transient non-serializable instance field subscriptionDao
in ChannelBean.java
Field com.derbyware.qtube.beans.ChannelBean.subscriptionDao
Actual type com.derbyware.qtube.dao.SubscriptionDao
代码:
@Named
@ViewScoped
public class ChannelBean extends BaseBacking implements Serializable {
private static final long serialVersionUID = 1L;
@EJB
private SubscriptionDao subscriptionDao;
为什么说我的 EJB 应该是可序列化的?我以前从未遇到过这样的建议。
和
getCorrectAnswerTwo()
可以通过返回对可变对象的引用来公开内部表示
代码:
public String[] getCorrectAnswerTwo() {
return correctAnswerTwo;
}
我需要在 jsf 页面中显示数组。那么为什么该工具报告这是一个问题。
和
setCorrectAnswers 可以通过合并对可变对象的引用来公开内部表示
public void setCorrectAnswers(String[] correctAnswers) {
this.correctAnswers = correctAnswers;
}
和
它说我应该使用 Integer.parseInt()
而不是 Integer.valueOf()
。这是为什么?
最佳答案
您显式声明包含类以实现 Serializeable。
所以拥有会导致序列化失败的字段可能是个问题。
并且该方法返回原始数组,因此该方法的任何调用者都可以更改该内部实现细节的状态。
对于这两种方法之间的区别,简单地做一些研究,比如阅读Difference between parseInt and valueOf in java?
这就是全部。
关于java - findbugs 报告了这些关于我的项目代码的错误。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53902815/