Mac*_*Mac 13 java oop encapsulation
setter方法是否仅用于设置属性的值,因为它作为参数传递?在将值赋给属性之前,我们可以编写一些验证逻辑吗?
Jer*_*vel 21
是的,验证逻辑绝对可以接受.
应该注意的是,如果您有广泛的验证,您可能希望将其提取到特定的验证器服务.但是对于简单的验证,您可以安全地执行此操作.
使用getter和setter背后的整个想法是没有人可以直接访问你的字段.如果你只是想设置/获取值,你可以制作它们public.
相反,我们使用setter来验证传入的数据,看它是否符合我们设置的规则.
这个概念也称为"封装",是面向对象编程的基石.
当然.您可以包含验证.这是可以接受的,但不是必要的.您只需要考虑如果您不验证它,那么任何值都将尝试设置为变量(满足数据类型要求).
基本上如果你有
public void setNickname(String nick)
{
this.nickname = nick;
}
Run Code Online (Sandbox Code Playgroud)
并且你想要验证它,你可以在setter中做到 - 例如
public void setNickname(String nick)
{
if(nick.matches("[a-zA-Z]+"){ // only letters
this.nickname = nick;
}else{
// react
}
}
Run Code Online (Sandbox Code Playgroud)
或者在使用它之前在制定者之外
if(nick.matches("[a-zA-Z]+"){ // only letters
account.setNickname(nick);
}
Run Code Online (Sandbox Code Playgroud)
或者您可以使用方法来验证它甚至是单独的验证器类.有很多可能性.
你不必害怕开发人员对此感到眼花缭乱,就像有人说的那样.
| 归档时间: |
|
| 查看次数: |
11311 次 |
| 最近记录: |