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

时间:2014-05-16 13:02:56

标签: java class

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

3 个答案:

答案 0 :(得分:13)

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

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

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

答案 1 :(得分:5)

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

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

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

2。封装(私人成员):

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

3。 Getters和Setters被高度滥用:

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

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

结论:

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

答案 2 :(得分:-1)

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