¿Cuándo usar Long vs long en java?
A continuación es mi interfaz -
public interface IDBClient {
public String read(ClientInput input);
}
Esta es mi implementación de la interfaz -
public class DatabaseClient implements IDBClient {
@Override
public String read(ClientInput input) {
}
}
Ahora tengo una fábrica que tiene la instancia deDatabaseClient
Me gusta esto -
IDBClient client = DatabaseClientFactory.getInstance();
....
Ahora necesito hacer una llamada aread
método de miDatabaseClient
que acepta elClientInput
parámetro y abajo está la clase para el mismo. Esta clase no fue escrita por mí, así que esa es la razón por la que tengo una pregunta sobre esto y estoy bastante seguro de que esta es la forma incorrecta de hacerlo.
public final class ClientInput {
private Long userid;
private Long clientid;
private Long timeout_ms = 20L;
private boolean debug;
private Map<String, String> parameterMap;
public ClientInput(Long userid, Long clientid, Map<String, String> parameterMap, Long timeout_ms, boolean debug) {
this.userid = userid;
this.clientid = clientid;
this.parameterMap = parameterMap;
this.timeout_ms = timeout_ms;
this.debug = debug;
}
}
Así que cuando el cliente hace una llamada aread
método deDatabaseClient
, van a crear elClientInput
parámetro como este y luego usar la fábrica para obtener la instancia deDatabaseClient
y luego llamar al método de lectura en consecuencia.
Map<String, String> paramMap = new HashMap<String, String>();
paramMap.put("attribute", "segmentation");
ClientInput input = new ClientInput(109739281L, 20L, paramMap, 1000L, true);
IDBClient client = DatabaseClientFactory.getInstance();
client.read(input);
Planteamiento del problema:-
Así que mi primera pregunta es ¿eluserid
, clientid
, timeout_ms
debiera serLong
objeto o simplementelong
enClientInput
¿clase?La segunda pregunta que tengo es que es posible que el cliente pueda pasar información incorrecta, comonegative user ids
, negative client id
, negative timeout
Valor, etc, etc. Entonces, ¿dónde debería hacer esta validación? ¿Debo hacer esta verificación de validación en el constructor deClientInput
clase o en algún otro lugar? ¿Cuál es la mejor manera de hacer esto y cómo debo hacer la validación?