在我的国家/地区,我们使用 11 位数字作为国家 ID。哪个选项更适合用 Java 表示它们,long 还是 String(或者其他选项,如果有更合适的话)?
国家ID不会进行任何算术计算,但如果我们使用字符串,则需要检查它是否是数字。在这两个选项中,都需要根据某些规则进行检查,例如:
- 不会从零开始
- 正好 11 位数字
- 一些算法,例如(第一位数字 + 最后一位数字)/10 等于第三位数字等。
此外,它们将在 REST api 调用中使用,因此可能有很多请求涉及它们(序列化-反序列化-验证等)。
**关于第 3 条的澄清: 我对算术计算的意思是,不会有像 (id * 2/3) + 10 之类的东西。算法只是一堆检查用户输入的规则,而不是每次都询问政府网络服务。
最佳答案
这里有两个单独的问题:
- Java 代码:我会将 ID 的概念封装在自己的类中 - 一旦完成,您就可以选择您认为更好的任何内部表示形式,甚至可以在以后更改它
- 序列化:您提到了 REST - 它是一种文本格式,因此 REST 消息将包含字符串表示形式
类似于:
class Id {
//internal representation
long id;
//or
String id;
//public methods
String getIdAsString();
//factory or use constructors
static Id of(String id) //include validation code
static Id of(long id); //include validation code
}
关于java - 如何在 Java 中表示大数字 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34161525/