Kiedy używać Long vs long w java?

Poniżej znajduje się mój interfejs -

public interface IDBClient {
    public String read(ClientInput input);
}

To moja implementacja interfejsu -

public class DatabaseClient implements IDBClient {

    @Override
    public String read(ClientInput input) {

    }
}

Teraz mam fabrykę, która pobiera wystąpienieDatabaseClient lubię to -

IDBClient client = DatabaseClientFactory.getInstance();
....

Teraz muszę zadzwonić doread metoda mojegoDatabaseClient który akceptujeClientInput parametr i poniżej jest klasą dla tego samego. Ta klasa nie została napisana przeze mnie, dlatego mam pytanie na ten temat i jestem prawie pewien, że jest to niewłaściwy sposób.

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

Więc kiedy klient dzwoni doread metodaDatabaseClient, stworząClientInput parametr taki jak ten, a następnie użyj fabryki, aby uzyskać wystąpienieDatabaseClient a następnie odpowiednio wywołaj metodę odczytu.

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

Oświadczenie o problemie: -

Moje pierwsze pytanie brzmi: czyuserid, clientid, timeout_ms powinno byćLong obiekt lub po prostulong wClientInput klasa?Drugie pytanie, jakie mam, jest możliwe, że klient może przekazać błędne informacje, takie jaknegative user ids, negative client id, negative timeout wartość itp. itd. Następnie, gdzie powinienem wykonać tę weryfikację? Czy powinienem zrobić to sprawdzanie poprawności w konstruktorzeClientInput klasa czy w innym miejscu? Jaki jest lepszy sposób na to i jak powinienem wykonać walidację?

questionAnswers(7)

yourAnswerToTheQuestion