setter方法有必要有一个参数吗?通常,setter方法接受一个参数作为Object的某个属性的值.如果我想首先测试依赖于另一个布尔值的参数的有效性,如果是,则首先验证,否则只需设置值.
我通过ftp服务器从客户端获取值.有时这些文件包含垃圾值.例如,#3432838#9等电话号码.所以在我设置值之前,我需要删除那些垃圾字符.我可以在setter方法中做到吗?这是一种有效的方法吗?
提前谢谢!
编辑:
这是有效的:
public void setSomething(String strValue){ if(checkValidity(strValue)){ // set the value } else { // set the value to an empty string } }
VonC.. 12
特别是在java bean框架模型中,它通常不是强制性的.
当它们意图"交换"一个值时,你可以让setter没有参数.
void setCheck()
例如,可以将"check"布尔属性设置为true.
因此,即使它不是java bean意义上的"setter",你也可以想象用于其他目的的setter.
另外,根据JavaBean规范的第7节,setter可以有多个参数,例如Indexed属性(索引属性支持一系列值.每当读取或写入属性时,只需指定一个索引来标识哪个值你要.)
void setter(int index, PropertyType value); // indexed setter void setter(PropertyType values[]); // array setter
在您的情况下,一种有效的方法是在函数的签名中添加运行时异常.
这样,您就不会对已经调用setter的所有其他类进行任何不必要的编译时异常检查.
或者,您可以将属性视为Constrained属性并添加非运行时异常.
需要约束属性setter方法来支持PropertyVetoException.向尝试更新的受约束属性的用户提供此文档可能被否决.因此,简单的约束属性可能如下所示:
PropertyType getFoo(); void setFoo(PropertyType value) throws PropertyVetoException;
这允许在需要时添加VetoableChangeListener.
关于你的片段,它是"有效的",但可能不是最佳的,因为(如本问题所述):
验证应与验证方法中的getter或setter分开捕获.这样,如果需要在多个组件之间重用验证,则可以使用它.
最好快速失败(因此我的建议是在设置器中添加异常).
Marko.. 5
通过Java Bean规范setter有一个参数.如果你添加另一个,无论出于何种原因,它不再被认为是setter.
Setter完全有效"清理"其参数,或者如果无效则抛出异常.
特别是在java bean框架模型中,它通常不是强制性的.
当它们意图"交换"一个值时,你可以让setter没有参数.
void setCheck()
例如,可以将"check"布尔属性设置为true.
因此,即使它不是java bean意义上的"setter",你也可以想象用于其他目的的setter.
另外,根据JavaBean规范的第7节,setter可以有多个参数,例如Indexed属性(索引属性支持一系列值.每当读取或写入属性时,只需指定一个索引来标识哪个值你要.)
void setter(int index, PropertyType value); // indexed setter void setter(PropertyType values[]); // array setter
在您的情况下,一种有效的方法是在函数的签名中添加运行时异常.
这样,您就不会对已经调用setter的所有其他类进行任何不必要的编译时异常检查.
或者,您可以将属性视为Constrained属性并添加非运行时异常.
需要约束属性setter方法来支持PropertyVetoException.向尝试更新的受约束属性的用户提供此文档可能被否决.因此,简单的约束属性可能如下所示:
PropertyType getFoo(); void setFoo(PropertyType value) throws PropertyVetoException;
这允许在需要时添加VetoableChangeListener.
关于你的片段,它是"有效的",但可能不是最佳的,因为(如本问题所述):
验证应与验证方法中的getter或setter分开捕获.这样,如果需要在多个组件之间重用验证,则可以使用它.
最好快速失败(因此我的建议是在设置器中添加异常).
通过Java Bean规范setter有一个参数.如果你添加另一个,无论出于何种原因,它不再被认为是setter.
Setter完全有效"清理"其参数,或者如果无效则抛出异常.