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

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

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

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

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

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

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

可以从课外访问公共成员,出于实际考虑,这意味着“可能在任何地方”。 如果公共领域出现问题,罪魁祸首可能在任何地方,因此为了追踪错误,你可能需要查看相当多的代码。

2。 封装(私人成员):

相反,私有成员只能从同一个类中访问,因此如果出现问题,通常只能查看一个源文件。 如果您的项目中有一百万行代码,但您的类保持较小,这可以将您的错误跟踪工作量减少1000倍。

3。 Getters和Setters被高度滥用:

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

过度使用的一个原因是,在IDE中,现在只需几次点击即可创建这些访问器。 完全没有意义的getter / setter代码有时比类中的实际逻辑长,即使你不想这样,你也会多次读取这些函数。

结论:

使用访问器(getter和setter)来限制对字段变量的直接访问比使用公共字段更受欢迎,但是,为每个字段制作getter和setter是过度的。 它也取决于情况,有时你只想要一个愚蠢的数据对象。 应该为真正需要的领域添加访问者。 类应该暴露出更大的行为,恰好使用其状态,而不是由其他类操纵的状态存储库。

我相信getter方法调用比直接调用更好,因为它有助于查找内部类和类外部的所有引用。