返回信息流现在要写一个函数,根据输入的byte数组得到一组数据,数据里面包含long,int,short,double,float 5种数据。这5种数据会混在一起,而且数量不确定。然后根据类型的不同,调用不同的函数。
问题是调用的函数的参数类型都是int,long这种。如果用数组或者list存的话,就需要进行强制类型转化。但是我找了一下,java的反射好像没法做到强制类型转换,如果用(int)这种方法感觉耦合度又太高。
这种情况下应该怎么写才好?
这是一条镜像帖。来源:北邮人论坛 / java / #38776同步于 2015/2/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
求问一个Java的设计问题
hyx2011
2015/2/27镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
是要做基于hbase的索引,用rowKey作为存储索引数据的地方,然后用自定义的filter去过滤。因为项目需要的数据类型目前只有5种,所以目前只做5种。
【 在 nuanyangyang 的大作中提到: 】
: 楼主能说一说具体的问题吗?或许有更好的解决方案。
【 在 hyx2011 的大作中提到: 】
: 是要做基于hbase的索引,用rowKey作为存储索引数据的地方,然后用自定义的filter去过滤。因为项目需要的数据类型目前只有5种,所以目前只做5种。
我是问,具体你的数据是如何编码的?你说byte数组里可以包含long,int,short,double,float,但是这5种数据类型是如何编码成byte的?比如用文本还是二进制,二进制的话字节序是什么?需要对齐和padding吗?相邻数据之间用什么分隔?
你说按照类型不同调用不同的函数,具体的规则是什么,你有哪些函数?他们的signature分别是什么?
数据是用二进制编码的,编码操作使用的是其他库,所以字节序不清楚。相邻数据之间没有分隔,因为int,long等编码成byte数组后的大小是固定的,然后byte数组存储的数据信息可以从其他地方得到。因此可以知道第一个,第二个等数据的类型,然后取出来就行了。
针对5种类型的数据有5种处理函数,根据变量类型的不同调用不同的函数。
signature都是int deal(int)这种,不过形参的类型是long,short等5种
【 在 nuanyangyang 的大作中提到: 】
:
: 我是问,具体你的数据是如何编码的?你说byte数组里可以包含long,int,short,double,float,但是这5种数据类型是如何编码成byte的?比如用文本还是二进制,二进制的话字节序是什么?需要对齐和padding吗?相邻数据之间用什么分隔?
: 你说按照类型不同调用不同的函数,具体的规则是什么,你有哪些函数?他们的signature分别是什么?
你用了第三方的库,也就用它来解码吧。
如果只有五种情况,判断一下类型,调用相应的函数,就可以了,难点在哪里呢?你说的list和数组是怎么回事?
来自「北邮人论坛手机版」
因为不同的类型要调用不同的解码方法,写了一个接口,然后将int,long这些的解码函数放在不同的继承了接口类里,然后用一个map做查找。这样导致我在解码的时候返回的是object,需要进行强制类型转换。java的反射貌似做不了,但是觉得用(int)这种方法不太好。
【 在 nuanyangyang 的大作中提到: 】
: 你用了第三方的库,也就用它来解码吧。
: 如果只有五种情况,判断一下类型,调用相应的函数,就可以了,难点在哪里呢?你说的list和数组是怎么回事?
: 来自「北邮人论坛手机版」