是getter方法调用访问变量比在类中直接变量访问更好

Bwi*_*ire 6 java class

我只是想知道在类实例中是否可以使用getter方法访问类变量,以及是否与直接访问有任何明显的性能差异.特别是在预期在jvm中生成许多对象的情况下.

Tho*_*rig 14

在Java中,通过类外部的getter/setter访问所有字段是一种约定.从课堂内部,您通常直接访问字段.但是,您也可以通过getter/setter访问它们.

重要的是要知道这只是一个惯例.许多其他编程语言没有这样严格的规则或其他概念.所以你不是被迫这样做的.但这是一个很好的做法.

并且:不介意表现!使用getter/setter不会影响应用程序的性能.JVM/Java的设计与此完全相同.每个JVM都将优化您的代码并以非常有效的方式处理getter/setter.尝试编写清晰易读的代码.


MCH*_*ppy 5

我将分三部分回答您的问题:

1。直接访问(公共成员)是最糟糕的解决方案:

可以从班级外部访问公共成员,出于实际考虑,这意味着“可能在任何地方”。如果某个公共领域出现问题,罪魁祸首可以在任何地方,因此为了查明该错误,您可能必须查看大量代码。

2。封装(私有成员):

相比之下,私有成员只能从同一类内部访问,因此,如果出现问题,通常只需要查看一个源文件。如果您的项目中有一百万行代码,但是您的类很小,那么可以将错误跟踪的工作量减少1000倍。

3。Getter和Setter的使用过度:

创建私有字段,然后使用IDE为所有这些字段自动生成getter和setter几乎和使用public字段一样糟糕。

过度使用的原因之一是,在IDE中,只需单击几下即可创建这些访问器。完全无意义的getter / setter代码有时比类中的真实逻辑还要长,即使您不想这样做,您也会多次阅读这些函数。

结论:

使用访问器(getter和setter)来限制对字段变量的直接访问比使用公共字段更可取,但是,使每个字段都使用getter和setter是过分的。但是,这也取决于情况,有时您只需要一个哑数据对象。应该在真正需要它们的字段中添加访问器。一个类应该暴露出恰好使用其状态的较大行为,而不是要由其他类操纵的状态存储库。