java中使用getter和setter调用类的属性运行会比较慢吗
因为对运行速度有一定的要求,并且数据量较大,所以想知道是不是调用方法比直接使用属性会慢一点,因为对封装性要求不高,所以想知道在这种请况下是不是可以不用getter和set...
因为对运行速度有一定的要求,并且数据量较大,所以想知道是不是调用方法比直接使用属性会慢一点,因为对封装性要求不高,所以想知道在这种请况下是不是可以不用getter和setter方法。
展开
2个回答
展开全部
实际上,Getter/Setter和封装性没有任何关系。数据并没有比使用公共属性获得更多隐蔽或封装。其他的类对这个类的内部细节仍然了如指掌。类的改动可能会蔓延,迫使依赖它的其他类做出相应的修改。以这种方式使用的Getter和Setter通常破坏了封装性。一个真正完整封装的类是没有setter方法的,而且最好也没有getter方法。类应该负责使用自身的数据计算并返回结果,而不是从某个类获得数据并计算这些数据。
通过使用存取方法来限制对属性变量的访问要优于直接使用公共属性变量。但是,为每一个属性都创建getter和setter方法确实有些极端。而且这也要根据具体的情况来定,有些时候你仅仅希望有一个单纯的数据对象而已。应该为真正需要的属性添加存取方法。一个类应该使用它自身的属性,并对外提供强大的功能,而不是仅仅作为一个被其他类操作的存储状态属性的存储池。
而如果想要运行速度快的话,应该从以下几方面入手:
一.良好编程习惯
二.数据库优化,比如运用存储过程,增加数据库连接池大小等
三.Java虚拟机堆和垃圾回收设置。注重不要将最大堆大小设置得过大。堆越大,内存中保存的对象越多。内存中对象越多,回收过程时间越长。
配置初试堆大小的一般性策略包括:
将初始大小设置为最大堆大小
将初始大小设置为最大堆大小的1/4到1/2
对于年轻一代堆大小,Sun 推荐是设置为最大堆大小的1/3。
也可以选择不同的垃圾回收算法
等等
通过使用存取方法来限制对属性变量的访问要优于直接使用公共属性变量。但是,为每一个属性都创建getter和setter方法确实有些极端。而且这也要根据具体的情况来定,有些时候你仅仅希望有一个单纯的数据对象而已。应该为真正需要的属性添加存取方法。一个类应该使用它自身的属性,并对外提供强大的功能,而不是仅仅作为一个被其他类操作的存储状态属性的存储池。
而如果想要运行速度快的话,应该从以下几方面入手:
一.良好编程习惯
二.数据库优化,比如运用存储过程,增加数据库连接池大小等
三.Java虚拟机堆和垃圾回收设置。注重不要将最大堆大小设置得过大。堆越大,内存中保存的对象越多。内存中对象越多,回收过程时间越长。
配置初试堆大小的一般性策略包括:
将初始大小设置为最大堆大小
将初始大小设置为最大堆大小的1/4到1/2
对于年轻一代堆大小,Sun 推荐是设置为最大堆大小的1/3。
也可以选择不同的垃圾回收算法
等等
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询