您现在的位置是:网站首页> 新闻快讯> 软件使用 新闻快讯

set(set in)

小玉2023-07-05软件使用 254人已围观

简介浅谈一下java中的get方法和set方法。记得在刚刚接触java这门语言的时候,老师就告诉我们,在定义实体类的时候,要做到属性与行为分离,即属

set(set in)

最后更新:2023-07-05 05:24:15

推荐指数

浅谈一下java中的get方法和set方法。记得在刚刚接触java这门语言的时候,老师就告诉我们,在定义实体类的时候,要做到属性与行为分离,即属性都用private定义,使得外部不能直接访问和修改,然后为每个属性都提供get和set方法,供外部访问和修改。当时我并不理解这样做的意义到底是什么,因为我觉得,这种方式,和直接把属性定义成public的方式,都能够达到相同的目的,都可以使外部对属性访问和修改,只不过一个是直接访问和修改,一个是间接的调用get和set方法来访问和修改,但是既然都能够达到相同的目的,我们为什么不选择更简单的方式呢?何必要搞的这么麻烦呢?后来,我想可能是因为这样的原因,我们定义get和set的时候,可以在方法内做一些权限的控制以及参数的验证等等,这样代码的安全性会比较高。假如有用户年龄的属性age,那age的正常取值范围应该在0-150岁之间,那如果age定义成public的,那在外部为age赋值时,可能会把age赋值为好几万,这样就会造成数据错误。但是你如果把age定义成private的,然后在提供get方法和set方法,你就可以在set方法内对参数做一下判断,如果参数不在这个范围以内,就直接报错。这样就可以把所有属性的访问和修改的方式,完完全全的控制在我们自己的手里,代码的安全级别也会更高。但是这只是理论,在实际的工作中,其实我们极少会把权限的控制以及参数的验证放到get和set方法里。在通常情况下,我们都会把这些放到入口层,比如controller入口,定时任务入口等等。而对于get和set方法,我们都是利用编辑器直接一键生成,而生成以后,我们几乎不会去动它。那这样的话,我觉得get和set方法,已经没有任何的意义了,它已经变成了一项没有任何意义的重复性的工作而已。而现在为了减少这种无意义的重复的工作,又搞出了一个lomok插件,我想,搞lomok插件的这个人,也一定是觉得get和set方法毫无意义,但是你又不得不做,所以才搞这个一个插件出来。有人可能会说了,如果你觉得get和set方法毫无意义,你可以自己把属性定义成public的,这样不是更简单么,还用lomok插件干嘛?这种想法我也曾经有过,并且亲自动手尝试过,结果就是各种的报错。因为现在好多的框架和中间件,它都会去找你这个属性对于的get和set方法,找不到,他就会报错了。所以你没办法,你虽然知道它没有意义,但是你还是不得不去做。我是个java的忠实拥护者,但是我也不认为java所有的东西都是完美的,就像get和set方法,我觉得最理想的做法是,如果有特殊需求的属性,可以单独为这个属性定义get和set方法,但是这种特殊的需求一定是极少的,我们没有必要为所有的属性都定义get和set方法。而且在一个接口里,如果频繁的调用get和set方法,对效率也是有影响的,因为每一次方法调用,都会涉及到栈内存的空间分配,以及进栈出栈等等。虽然这些对效率的影响,几乎可以忽略不计,但是我觉得如果可以把属性全部定义成public的,效率一定是只高不低。大家怎么看呢,欢迎评论区留言讨论。

很赞哦! (0)

文章评论

来说两句吧...

验证码: