当前位置: 首页 > 知识库问答 >
问题:

“可序列化”类中的字段应该是瞬态的或可序列化的鱿鱼:S1948

曾嘉祯
2023-03-14

我遇到了下面的问题,请让我知道是否有人以前见过这个,真的让我疯狂地想如何前进。

我有两个实体-

    public class A implements Serializable{
    private String one;
    private String two;
    private java.util.Date date; 
    }
    public class B implements Serializable{
    private A a;
    private String three;
    }

当我在类B上运行SonarQube分析时,我看到S1948弹出,我只是不确定我还能在这里做什么,类A和B是可序列化的,并且确实拥有所有可序列化的成员字段。

请让我知道,如果这已经解决之前。

提前感谢!

共有1个答案

仲孙向明
2023-03-14

我做这个有点晚了,但我刚刚在sonar java插件的jira中发现了一个bug:https://jira.sonarsource.com/browse/SONARJAVA-1266

基本上,它表示,如果在分析时,字节码不可用于所引用的类型,则将引发S1948。

如果这是您的问题,则可能意味着在分析B类的字节码时,在类路径上找不到A。

 类似资料:
  • 嗨,我在声纳皮棉中收到此错误: “Serializable”类中的字段应该是暂时的或可序列化的 私有最终条件notEmpty=锁定。newCondition() 我的代码是: 有人能提供解决方案,使sonar不会显示所有三个变量的这些错误吗?

  • 我的代码: 我只是不知道我还能在这里做些什么,这个类是可序列化的,并且所有的成员字段也是可序列化的。 请让我知道,如果这已经解决之前。

  • 考虑以下代码: 现在扩展了一个实现接口的类。类和是带有一堆getter和setter的POJOS。FindBugs抱怨和字段说: 这个Serializable类定义了一个非基元实例字段,它既不是瞬态的、Serializable的,也不java.lang.Object的,并且似乎没有实现Externalizable接口或readObject()和WriteObject()方法。 好吧,所以一切都很好

  • 我有一个没有扩展可串行化或可外部化接口的类,但在netbeans中使用FindBugs时仍然会遇到错误。有人能告诉我如何解决这个问题吗? 这是我的课 FindBug中的Bug:类分析器定义了一个非瞬时的非序列化实例字段objAnalyzerVar,对于objAnalyzerDataTypeInfo也是如此;

  • 问题内容: 除了在SonarLint V3(squid:S1948)中遇到此问题之外,我的问题与此问题非常相似。 我的代码是: 摘要对象实现可序列化。 现在,如果我用ArrayList替换List,则SonarLint中会出现另一个警告,提示我们应该使用接口而不是实现类。 我认为这可以在SonarQube中解决,但是对于SonarLint我不知道。这是一个错误还是我做错了什么? 问题答案: Son

  • 问题内容: 考虑下面的类。如果我对它运行Findbugs,它将在第5行而不是在第7行给我一个错误(“可序列化类中的非瞬态不可序列化实例字段”)。 这是正确的,因为java.util.Set从未在其层次结构中实现Serializable,而java.util.HashSet却没有实现。但是,最佳实践是针对接口而不是具体的实现进行编码。 我该如何最好地处理呢? 我可以在第3行上添加一个@Suppres