不希望在Java中将private设置为默认值

不希望在Java中将private设置为默认值,java,default,private,access-specifier,Java,Default,Private,Access Specifier,我在一节课上讲过: if (people.count < 10) return false; if(people.count

我在一节课上讲过:

if (people.count < 10)
    return false;
if(people.count<10)
返回false;
但伯爵却被红色的话语低估了 将计数的可见性更改为默认值

count作为private在另一个类中。但我不想将其更改为默认值。 我知道这是个坏习惯。
如果没有setter和getter,如何使其工作?

您可以更改可见性或公开getter。要求另一种方法来实现这一点,实际上就是问“我如何在不公开变量的情况下公开变量?”因此,您的呼叫。

if(people.getCount()<10)
if (people.getCount() < 10)
    return false;
返回false;
您只有两个选择;更改可见性或使用getter和setter。使用getter和setter的优点是它遵循了封装原则,这在Java中很重要。

字段
count
是私有的,因为它在类中。除了通过类的非私有成员之外,您不打算访问它

将其访问权限更改为“默认”很容易,但有害

通过一些黑客(反射、本机方法等)访问它将更加复杂,而且仍然有害


公开一个getter既简单又合适。

为什么不使用getter和setter?除了getter和setter以及公共字段之外,您唯一的另一个(在本例中是非常糟糕的)选项是reflection如何在没有setter和getter的情况下工作?答案很简单:你不能。这看起来更像是一时兴起,而不是一个设计问题(这就是为什么我否决它)。你可以使用反射来处理这项工作,但这是一种黑客替代方案,而不是良好的设计和实践(可能这取决于你)。请发布实例类
人员
。非常感谢大家!我将使用getter:people.getCount()或切换到Clojure(它不会将“private”视为private:),从以下问题开始:“没有setter和getter,我如何使它工作?”