在我的国家,我们使用11位数字作为国家ID。哪个选项最好用Java表示,long或String(如果有更合适的话,可以选择其他选项)?
国家ID不会受到任何算术计算,但如果我们使用String,则需要检查它是否为数字。在这两个选项中,需要根据以下某些规则进行检查:
此外,它们将用于REST api调用,因此可能有许多涉及它们的请求(序列化 - 反序列化 - 验证等)。
**关于子弹3的澄清: 算术计算的意思是,它不会像(id * 2/3)+ 10等。算法只是一堆规则来检查用户输入,而不是每次都要求政府网络服务。
答案 0 :(得分:4)
这里有两个不同的问题:
类似的东西:
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
}
答案 1 :(得分:3)
对于您想要为上一个项目符号点执行的算术,字符串更好。在索引处获取字符并将其转换为int比在数字中的某个位置获取值更容易。
答案 2 :(得分:2)
你提到了:
National Ids不受任何算术计算的影响
然后你写道:
某些算法(如第一个数字+最后一个数字)/ 10等于第三个数字 等
如果你需要做算术并检查它是否是数字,那么使用Long to String总是更好。 此外,如果我需要检查特定位置的值,并且架构不会更改,我将创建一个表示我的ID的类,并对其进行一些正则表达式验证。
答案 3 :(得分:-2)
使用BigInteger / BigDecimal等。