问题描述
我有两个声明的数组和一些参数。 首先,我需要检查数组是否不为空,然后检查第一个数组的特定参数是否为数字。
现在我有两个数组。 其中一个具有所有参数,第二个仅具有必须为数字的参数(也包含在第一个数组中)
我想在一个方法中进行两项检查,因为我有两种不同的检查方法。
这就是我所拥有的
/** Array con parametros no obligatorios Array con los parametros obligatorios. */
private static final String[] PARAMETROS_OBLIGATORIOS = new String[] {
"idFichero","nombreFichero","qnuOrdest","idHsc","timCamestad","codGrupoest","qnuOrdestRcvd"
};
/** Array con los parametros que deben ser numericos. */
private static final String[] PARAMETROS_NUMERICOS = new String[] {
"idFichero","idHsc","qnuOrdest","qnuOrdestRcvd"
};
private void validarObligatorios(final JobParameters parameters) throws JobParametersInvalidException {
for (String nombre : PARAMETROS_OBLIGATORIOS) {
if (StringUtils.isBlank(parameters.getString(nombre))) {
String error ="El parametro " + nombre + " es obligatorio";
LOGGER.error(error);
throw new JobParametersInvalidException(error);
}
}
}
private void validarNumericos(final JobParameters parameters) throws JobParametersInvalidException {
for (String nombre : PARAMETROS_NUMERICOS) {
if (!StringUtils.isNumeric(parameters.getString(nombre))) {
String error = "El parametro " + nombre + " debe ser numerico";
LOGGER.error(error);
throw new JobParametersInvalidException(error);
}
}
}
我该怎么做才能用独特的方法完成两个步骤?
提前致谢!
1楼
validarNumericas
通过以下单个函数替换您的2个方法validarObligatorios
和validarNumericas
回答您的问题?
private void validarObligatoriosYNumericos(final JobParameters parameters) throws JobParametersInvalidException {
for (String nombre : PARAMETROS_OBLIGATORIOS) {
if (StringUtils.isBlank(parameters.getString(nombre))) {
String error ="El parametro " + nombre + " es obligatorio";
LOGGER.error(error);
throw new JobParametersInvalidException(error);
}
}
for (String nombre : PARAMETROS_NUMERICOS) {
if (!StringUtils.isNumeric(parameters.getString(nombre))) {
String error = "El parametro " + nombre + " debe ser numerico";
LOGGER.error(error);
throw new JobParametersInvalidException(error);
}
}
}
HTH!
2楼
将数字列数组复制到列表中,并使用contains
来查看是否应检查值。
此解决方案假定数字列数组是强制列数组的子集,但看起来这是一个安全的假设。
private void validarObligatorios(final JobParameters parameters) throws JobParametersInvalidException {
List<String> numericColumns = Arrays.asList(PARAMETROS_NUMERICOS );
String error = null;
for (String nombre : PARAMETROS_OBLIGATORIOS) {
if (StringUtils.isBlank(parameters.getString(nombre))) {
error ="El parametro " + nombre + " es obligatorio";
} else if (numericColumns.contains(nombre) {
if (!StringUtils.isNumeric(parameters.getString(nombre))) {
error = "El parametro " + nombre + " debe ser numerico";
}
}
if (error != null) {
LOGGER.error(error);
throw new JobParametersInvalidException(error);
}
}
}