Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 换行字符串键以区分外部键和内部键_Java_Java 8 - Fatal编程技术网

Java 换行字符串键以区分外部键和内部键

Java 换行字符串键以区分外部键和内部键,java,java-8,Java,Java 8,我们有两种ID,内部ID和外部ID。当前记录既有内部ID也有外部ID,将来可能会有外部B类型的ID,因此某些记录可能有内部ID和外部ID 我们目前将所有ID表示为字符串。它可能导致错误,方法需要内部密钥,但实际传递了外部密钥 我们如何防止这种类型的错误?将字符串键包装到InternalID、ExternalAID、ExternalBID类中并在任何地方使用这些包装器对我们有用吗? 我担心内存占用,特别是当我们谈论数亿个键,或者其他可能出错的东西时,可能会发生这种情况。我认为所有字符串键都需要一个

我们有两种ID,内部ID和外部ID。当前记录既有内部ID也有外部ID,将来可能会有外部B类型的ID,因此某些记录可能有内部ID和外部ID

我们目前将所有ID表示为字符串。它可能导致错误,方法需要内部密钥,但实际传递了外部密钥

我们如何防止这种类型的错误?将字符串键包装到InternalID、ExternalAID、ExternalBID类中并在任何地方使用这些包装器对我们有用吗?
我担心内存占用,特别是当我们谈论数亿个键,或者其他可能出错的东西时,可能会发生这种情况。

我认为所有字符串键都需要一个鉴别器。例如:

String internalKey= "I1000201";
String externalAKey= "A1000201";
String externalBKey= "B1000201";
char type =  key.charAt(0);
if(type != 'I') throw new IllegalArgumentException("Invalid key");
// go on
然后,您可以通过第一个字符检查实际密钥类型来防止错误,例如:

String internalKey= "I1000201";
String externalAKey= "A1000201";
String externalBKey= "B1000201";
char type =  key.charAt(0);
if(type != 'I') throw new IllegalArgumentException("Invalid key");
// go on
如果所有键都使用不同的鉴别器,则还可以从
String
键创建自己的
Key

Key internal = Key.from("I1000201"); //internal key
Key external = Key.from("A1000201"); //external key A
Key.from("X1000201"); 
//        ^--- throws IllegalArgumentException for invalid key type


那是我的想法exactly@Eugene我还受到hibernate中所有实体的一个表支持的启发。:)如果我没记错的话,我们在代码库内部也会这样做,在代码库中,我们携带一个
字节[]
,第一个
字节始终只是一些元数据。。