BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #38776同步于 2015/2/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

求问一个Java的设计问题

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