gpt4 book ai didi

java - 什么时候在java中使用Long vs long?

转载 作者:IT老高 更新时间:2023-10-28 20:55:43 25 4
gpt4 key购买 nike

下面是我的界面 -

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

这是我的接口(interface)实现 -

public class DatabaseClient implements IDBClient {

@Override
public String read(ClientInput input) {

}
}

现在我有一个工厂,它可以像这样获取 DatabaseClient 的实例 -

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

现在我需要调用我的 DatabaseClientread 方法,该方法接受 ClientInput 参数,下面是相同的类.这门课不是我写的,所以这就是我对此有疑问的原因,我很确定这是错误的做法。

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

所以当客户调用 DatabaseClientread 方法时,他们会像这样创建 ClientInput 参数,然后使用工厂获取DatabaseClient的Instance,然后调用read方法。

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

问题陈述:-

  1. 所以我的第一个问题是 useridclientidtimeout_ms 应该是 Long 对象还是只是简单的longClientInput 类中?
  2. 我的第二个问题是,客户可能会传递错误的信息,例如 negative user idsnegative client idnegative timeout value 等等。那么我应该在哪里做这个验证?我应该在 ClientInput 类的构造函数中还是在其他地方进行此验证检查?执行此操作的更好方法是什么?我应该如何进行验证?

最佳答案

long是一个原语,必须有一个值。很简单。

Long是一个对象,所以:

  • 可以是null (意思是你喜欢的任何东西,但“未知”是一种常见的解释)
  • 它可以被传递给一个接受 Object 的方法。 , Number , Longlong参数(最后一个由于自动拆箱)
  • 可以作为泛型参数类型,即List<Long>可以,但是 List<long>不是好的
  • 可以通过java序列化机制进行序列化/反序列化

始终使用最简单的方法,所以如果您需要 Long 的任何功能, 使用 Long否则使用 long . Long 的开销小得惊人,但它就在那里。

关于java - 什么时候在java中使用Long vs long?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21034955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com