gpt4 book ai didi

java - squid :UndocumentedApi on public method in package classes如何解决

转载 作者:行者123 更新时间:2023-11-30 08:49:23 25 4
gpt4 key购买 nike

我有一些类,它们只在包中可见。经过分析,我收到了与缺少公共(public)构造函数/方法/类型等文档相关的问题。

Example class

这是错误(误报)吗?在我看来,将构造函数/方法/类型从公共(public)更改为非公共(public)是毫无意义的。

我使用 SonarQube 5.1.1 和 Java Plugin 3.4.

最佳答案

关于方法、字段和内部类:

在包私有(private)类中公开方法(或字段或内部类)意味着如果用公共(public)类扩展,包中的公共(public)成员-私有(private)类(class)从外面可以看到!因此,它们必须被视为公开的,因此必须记录在案。

示例:

  • package-privateA:

    package org.foo;

    class A {
    public int field;
    public void method() {}
    public class Inner {}
    }
  • publicB:

    package org.foo;

    public class B extends A {
    }
  • 其他包C类:

    package org.bar;

    public class C {
    void test() {
    B b = new B();

    int f = b.field; // visible
    B.Inner = b.new Inner(); // visible
    b.method(); // visible
    }
    }

关于构造函数:

由于 package-private 类的构造函数仅在同一个包中可见,并且这些构造函数不能从另一个包中调用,即使通过公共(public)子类也是如此,因此对它们提出问题确实是错误的,应该是在 java 插件的 SQ 规则中更正(参见 SONARJAVA-1557 )。

不过,我建议降低该构造函数的可见性,因为公开它在某种程度上毫无意义......

关于java - squid :UndocumentedApi on public method in package classes如何解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31463950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com