私有内部类的构造函数也是私有的吗?

tyn*_*ynn 7 java android inner-classes android-lint android-studio

我正在重构一个正在变大的android项目.运行lint为我提供了JSME问题 外部和内部类之间的私有成员访问.考虑以下示例

public class Outer {
    private Inner mInner = new Inner();

    private class Inner {}
}
Run Code Online (Sandbox Code Playgroud)

我得到了这些信息

Name
   private field Inner mInner

Location
   class Outer (default package)

Problem synopsis
   Access to private member of class 'Inner' at line 2

Problem resolution
   Make 'Inner' constructor package-local
Run Code Online (Sandbox Code Playgroud)

应用问题解决方案会将源更改为

public class Outer {
    private Inner mInner = new Inner();

    private class Inner {
        Inner() {}
    }
}
Run Code Online (Sandbox Code Playgroud)

我此刻有点困惑.到现在为止,我认为这个例子相当于

public class Outer {
    private Inner mInner = new Inner();

    private class Inner {
        public Inner() {}
    }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下我错了还是皮棉问题?

Dav*_*ser 4

Java 语言规范第 8.8.9 节“默认构造函数”说:

\n\n
\n

在类类型中,如果该类声明为 public,则默认构造函数将隐式赋予访问修饰符 public (\xc2\xa76.6);如果该类被声明为 protected,则默认构造函数会隐式地赋予访问修饰符 protected (\xc2\xa76.6);如果该类被声明为私有,则默认构造函数将隐式赋予访问修饰符 private (\xc2\xa76.6);否则,默认构造函数具有无访问修饰符隐含的默认访问权限。

\n
\n