tengo 3 clases:Java herencia, usando Builder
- error
- ShellError
- WebError
donde
ShellError extends Error
y
WebError extends Error
En ShellError
hay campos, algunos de los cuales son opcionales y otros son obligatorios. Estoy construyendo el objeto de la siguiente manera:
shellError = new ShellError.Builder().setFile(filePattern)
.setHost(host).setPath(path).setSource(file.isSource())
.setJobName(p.getJobName()).build();
Desde ShellError
extiende Error
, yo más:
shellError.setDescription(msg.toString());
shellError.setExceptionClass("MyEvilException");
shellError.setExceptionMessage("Some clever error message");
shellError.setStacktrace(stack);
Así que ... ¿por qué molestarse con el constructor? Me gusta el hecho de que mi compilación() entre otras cosas valida convenientemente que todos los campos están configurados apropiadamente, etc.
Me encantaría si pudiera ... compilar() ShellError
y agregarle los campos de la clase Error
.
Lo que hice funciona.
- La pregunta es:
¿Hay una mejor manera, o ¿tiene sentido lo que hice?
- EDITAR
I Constructor actualizado() para aceptar algunos de los parámetros que se encontraban en la clase de error antes. Ahora tengo
shellError = new ShellError.Builder(exception, "Some description").setFile(filePattern).setHost(host)
.setPath(path).setSource(file.isSource()).
setJobName(p.getJobName()).build();
¿Qué dice usted? Mejor? ¿Peor?
sólo para completar este post, "ligera variante" significa: En el último y definitivo ejemplo: (1) El constructor debe ser abstracto (2) obj y thisObj deben estar protegidos (3) built -> obj –