我想我可能已经知道答案了,但选择要求对其进行澄清。
我有一个带有私有变量,获取器和设置器的简单POJO。
其中一些是String变量,在这些变量中,我只希望在初始化某些String时使用它们。
我的问题很简单-我应该将此验证放入POJO中-也许放在一个setter中,还是应该在调用setter之前在其他地方进行此验证?
下面的示例应仅允许值gzip
或compress
private String compressionType = null;
public void setCompressionType(String compressionType) {
if( ! ( compressionType.equals("gzip") ) || ( compressionType.equals("compress") ) )
{
compressionType = "gzip"; //a chosen default
}
this.compressionType = compressionType;
}
如果有人输入“ fred”或愚蠢的东西,则有效地设置默认值。
我之所以问这个问题,纯粹是因为在我工作的地方,我经常看到这种事情,在这里被接受了,但我不确定是否应该这样做。
最佳答案
现在enum
是头等舱类型的常用方法是使用enum
:
private CompressionType compressionType = null;
public enum CompressionType {
Compress,
GZip;
}
public void setCompressionType(CompressionType compressionType) {
this.compressionType = compressionType;
}
但是,如果验证比较繁重,则可以考虑使用
factory
或decorator
。