【发布时间】:2016-01-08 14:07:32
【问题描述】:
我正在重构一个越来越大的 android 项目。运行 lint 给了我 JSME 问题 外部和内部类之间的私有成员访问权限。考虑以下示例
public class Outer {
private Inner mInner = new Inner();
private class Inner {}
}
我得到了信息
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
应用问题解决方案将源更改为
public class Outer {
private Inner mInner = new Inner();
private class Inner {
Inner() {}
}
}
我现在有点困惑。到目前为止,我认为这个例子相当于
public class Outer {
private Inner mInner = new Inner();
private class Inner {
public Inner() {}
}
}
在这种情况下我错了还是皮棉问题?
【问题讨论】:
-
当你将一个类声明为私有时,属于该类的所有内容都将变为私有
-
@cricket_007 遗憾的是没有。它不包括 lint 抱怨的部分。
-
那我不太明白这个问题。拥有
public构造函数与包级(无访问修饰符)构造函数并不重要,因为类本身是private。例如。Outer之外的任何课程都不能访问Outer.Inner。 lint 消息似乎在说,如果没有比private限制更少的构造函数,你就不能说new Inner()
标签: java android android-studio inner-classes android-lint