findbugs报告这些关于我的项目代码的bug。
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应该是可序列化的?我以前从未遇到过这样的建议。
和
通过返回对可变对象代码的引用,可以公开内部表示:
public String[] getCorrectAnswerTwo() {
return correctAnswerTwo;
}
我需要在jsf页面中显示数组。那么为什么工具报告这是一个问题呢。
和
通过合并对可变对象的引用,set更正答案可能会暴露内部表示
public void setCorrectAnswers(String[] correctAnswers) {
this.correctAnswers = correctAnswers;
}
和
它说我应该使用整数。parseInt()
而不是整数。valueOf()
。为什么?
你的类ChannelBean
实现了Serializable
。为了使类(或更好的:该类的对象)可序列化,其所有字段也必须可序列化。FindBugs警告您,类的一个字段ChannelBean
不可序列化,在这种情况下,您的EJBSubscriptionDao
。如果您试图序列化ChannelBean,很可能会导致运行时异常,因为EJB不可序列化,所以无法序列化它。
要修复它,可以使SubscriptionDao
serializable,或者使ChannelBean
不实现serializable。
公开内部表示:您直接返回数组。该数组的任何接收器都可以覆盖其中的值,例如:
String[] answers = object.getCorrectAnswers();
answers[0] = "My Answer";
现在,“我的答案”将是正确的答案,它将在以后调用getCorrectAnswer()
时返回。
set更正答案()
的情况类似:
字符串[]答案=新字符串[]{“Foo”};对象设置正确答案(答案);答案[0]=“条形”;
现在,“Bar”应该是正确的答案。
要解决这个问题,通常最好存储阵列的副本/克隆,这样就不能再从外部对其进行修改。
Integer.valueOf()
创建一个新对象,而Integer.parseInt()
不创建。所以第二种方法效率最低,因为它没有内存分配的开销。(尽管一个好的JVM可能会优化它,所以差异可能无法测量,但更喜欢parseInt
仍然很有用)。
您可以显式声明要实现可序列化的包含类。
因此,拥有会导致序列化失败的字段可能是个问题。
该方法返回原始数组,因此该方法的任何调用者都可以更改该内部实现细节的状态。
对于这两种方法之间的差异,只需做一些研究,比如阅读java中parseInt和valueOf之间的差异?
这就是一切。
我想在三月计划一个月时间表,而不是使用静态成员。你不需要解释那些评论。“日”和“月时间表”都是类。 在我执行这段代码之前,它有两个错误。一个是“三月[]日”这句话这是一个错误。另一个是'for(int i=0;i 我不明白这些句子错在哪里。语法错误是什么?
我试图使java编译类文件,但它抛出了一个错误,如何修复它。
错误:将字节码转换为dex时出错:原因:com . Android . dex . dex异常:多个dex文件定义了Lcom/Google/Android/GMS/internal/measurement/zza bn;:app:transformClassesWithDexForDebug失败错误:任务执行失败”:app:transformClassesWithDexForDebug。com .
我正在尝试使用JUnit错误收集器报告错误。虽然我的断言失败了,但JUnit中并没有报告错误。但我在控制台中收到了“错误”信息。
给定一个0和1的数组,我们最多可以将K个值从0更改为1。 返回仅包含1的最长(连续)子数组的长度。 例1: 例2: 注: https://leetcode.com/problems/max-consecutive-ones-iii/ 这是问题链接。在第一个测试用例中,我得到了输出9,但应该是6。我不知道哪里出了问题?
错误:无法解决':app@debug /compileClasspath'的依赖关系:无法解决com.android.support: appcompat-v7:29.显示受影响模块的详细信息:应用 错误:无法解决':app@debugAndroidTest /compileClasspath'的依赖关系:无法解决com.android.support: appcompat-v7:29.显示受影响