当前位置:  开发笔记 > 编程语言 > 正文

setter方法有必要有一个参数吗?

如何解决《setter方法有必要有一个参数吗?》经验,为你挑选了2个好方法。

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完全有效"清理"其参数,或者如果无效则抛出异常.



1> VonC..:

特别是在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分开捕获.这样,如果需要在多个组件之间重用验证,则可以使用它.

最好快速失败(因此我的建议是在设置器中添加异常).



2> Marko..:

通过Java Bean规范setter有一个参数.如果你添加另一个,无论出于何种原因,它不再被认为是setter.

Setter完全有效"清理"其参数,或者如果无效则抛出异常.

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有