我想我可能已经知道答案了,但选择要求对其进行澄清。

我有一个带有私有变量,获取器和设置器的简单POJO。

其中一些是String变量,在这些变量中,我只希望在初始化某些String时使用它们。

我的问题很简单-我应该将此验证放入POJO中-也许放在一个setter中,还是应该在调用setter之前在其他地方进行此验证?

下面的示例应仅允许值gzipcompress

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;
}


但是,如果验证比较繁重,则可以考虑使用factorydecorator

10-04 17:45