我只是想知道在类实例中是否可以使用getter方法访问类变量,以及是否与直接访问存在任何明显的性能差异。特别是在预期在jvm中生成许多对象的情况下。
答案 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方法调用比直接调用更好,因为它有助于查找内部类和类外部的所有引用。