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

Findbugs不检测由用户定义的类公开内部表示

嵇光临
2023-03-14
[INFO] path.getInsertDate() may expose internal representation by returning Ttt.insertDate path.Ttt] At Ttt.java:[line 119]
public class Test {
    public String test;
}
public class ExposingTest { 
    private Test test;

    //No warning here.
    public Test getTest() {
         return test;
    } 
}

共有1个答案

单于骁
2023-03-14

Dr Findbugs为预定义的类集生成此警告。

FindBugs的目的是警告开发人员代码的潜在问题。Findbugs不检查不变性。

可变类本身并不是一个bug或问题。可变类可能是一个有效的设计选择。

public class Person {
    private Department dep;

    public void setDepartment(Department dep) {
        this.dep = dep;
    }
}

public class Department { 
    private String name;
    public void setName(String name) {
        this.name = name;
    }
}
static boolean mutableSignature(String sig) {
    return sig.equals("Ljava/util/Hashtable;") || 
            sig.equals("Ljava/util/Date;") ||
            sig.equals("Ljava/sql/Date;") ||
            sig.equals("Ljava/sql/Timestamp;") ||
            sig.charAt(0) == '[';
}

因此,Findbugs将为返回以下内容的方法生成这种类型的警告(内部表示暴露):

  • 哈希表;
  • 日期(java.util.datejava.sql.datejava.sql.timestamp);
  • 数组

Findbugs甚至不为列表和集合生成此警告。

 类似资料:
  • 问题内容: 有没有一种方法可以检测MySQL中的锁定表?我的意思是表被命令锁定。 (请注意,有兴趣检测使用来获取的 命名 锁的读者应改为从get_lock显示显示所有当前锁。) 问题答案: 显示每个表的状态及其锁定。 对于命名锁,请查看显示来自get_lock的所有当前锁

  • 问题内容: 我正在Kotlin中开发一个Android 密码库。我有几个类在Java应用程序中公开可见。在文档中找到了这一点。 声明成为Java。类的成员会经历名称重整,以使其更难从Java中意外使用它们,并允许重载具有相同签名但根据Kotlin规则彼此不可见的成员。 有办法解决这个问题吗? 问题答案: 我已经看到您所有的内部类都涉及加密和解密。 您可以通过定义一个顶级函数并将其标记为 ,然后将E

  • 本文向大家介绍xml 用户定义的常规(内部)实体,包括了xml 用户定义的常规(内部)实体的使用技巧和注意事项,需要的朋友参考一下 示例 可以定义自己的一般实体。该声明出现在DTD子集中,带有名称和关联的替换文本。 然后可以使用实体引用语法在文档中使用它&...;,可以在文本中或在属性值中使用它。            

  • 本文向大家介绍什么是alpha测试---内部测试(未公开)相关面试题,主要包含被问及什么是alpha测试---内部测试(未公开)时的应答技巧和注意事项,需要的朋友参考一下 beta测试---用户公测

  • 问题内容: 我已经看到了几个与Java中类似的示例,希望有人可以解释发生了什么。似乎可以内联定义一个新类,这对我来说真的很奇怪。 第一行是预期的输出行,因为它只是toString。但是第二似乎函数可以内联重写。 为此有技术术语吗? 还是任何更深入的文档? 如果我有以下代码: 代码输出: 问题答案: 它是一个匿名内部类。您可以在Java文档内部类链接中找到有关它的更多信息。 编辑 我正在添加一个更好

  • 我使用Azure库伯内特斯服务来提供我的微服务。当我登录到我的API网关时,它可以工作。但是当我尝试通过Api-Gateway联系另一个微服务时,我收到一个错误(500内部服务器错误)。我还在库伯内特斯设置了一个Eureka命名服务器,我提供的所有微服务都在那里注册。但是为什么我的API网关不能与我的微服务通信?它也可以在本地机器上工作。 我的Yaml文件 我所有的微服务都运行在同一个节点上。我的