java中,如何将Object类型的对象转换成byte[]

liuxwyygy 2008-04-30 12:43:05
在java中,如何将Object类型的对象转换成byte[]
问题类如下:

import java.util.*;
public class DataBuffer {
int max = 0;
int min = 0;
java.util.HashMap MapBuffer = new HashMap();
public byte[] Get() {
byte[] bty = null;
if (min < max) {
min++;
Object obj = MapBuffer.get("" + min);

//在此如何将obj转换成bty数据呢?

MapBuffer.remove("" + min);
}
return bty;
}
//此类中,先不考虑int类型的大小问题
public void Put(byte[] bty) {
max++;
MapBuffer.put("" + max, bty);
}
}
...全文
4362 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuxwyygy 2008-04-30
  • 打赏
  • 举报
回复
有没有功能再好点的呢?
要实现的功能就是先用Put()方法来压数据,然后再用Get()方法来得到数据,条件是先压的数据,先得到。
a_nuo 2008-04-30
  • 打赏
  • 举报
回复
import java.util.*;
public class DataBuffer {
int max = 0;
int min = 0;
java.util.HashMap MapBuffer = new HashMap();
public byte[] Get() {
byte[] bty = null;
if (min < max) {
min++;
bty = (byte[])MapBuffer.get("" + min);

//在此如何将obj转换成bty数据呢?

MapBuffer.remove("" + min);
}
return bty;
}
//此类中,先不考虑int类型的大小问题
public void Put(byte[] bty) {
max++;
MapBuffer.put("" + max, bty);
}
public static void main(String args[]){
DataBuffer a=new DataBuffer();
byte c[]={1,3,5,6};
for(byte f:c){
System.out.println (f);
}
a.Put(c);
byte d[]=a.Get();
System.out.println (d[0]);
for(byte e:d){
System.out.println (e);
}
}
}
liuxwyygy 2008-04-30
  • 打赏
  • 举报
回复
可以了,就是直接转换的,刚才我直接转换的时候,出错了,现在又可以了,真是郁闷啊。
a_nuo 2008-04-30
  • 打赏
  • 举报
回复
一般情况不这么存储byte
xinyan0321 2008-04-30
  • 打赏
  • 举报
回复
呵呵 刚刚贴的急了 还没说完呢

强转就可以了 试试吧
xinyan0321 2008-04-30
  • 打赏
  • 举报
回复
bty = (byte[])obj;
yangdongyao518 2008-04-30
  • 打赏
  • 举报
回复
\


记不太清了

好久没用过了 哎

是不是先转换成OBJ的包装类

应该是

yangdongyao518 2008-04-30
  • 打赏
  • 举报
回复
11
xinyan0321 2008-04-30
  • 打赏
  • 举报
回复
楼主希望得到的效果是不是这样的: 压进去时是byte[] 拿出来时还是byte[] ?

如果要做成这样的效果 不强转好像有点麻烦 不过为了避免楼上说的"危险" 可以在强转前加一句判断


if(obj instanceof byte[]){
bty = (byte[])obj;
}


不过个人认为强转不好 我特别不喜欢强转 楼主如果有时间 可以去搞搞看泛型 可以避免强转哦
云上飞翔 2008-04-30
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 xinyan0321 的回复:]
先压的数据,先得到

就是先进先出 应该是队列吧

既然这样 用ArrayList比用HashMap好吧
[/Quote]
答:
1)“就是先进先出 应该是队列吧 ”。是的。是一个对列。做对列时,用LinkedList比ArrayList要好。
2)你还要坚持Object强制转换成byte[]的设计方案?
xinyan0321 2008-04-30
  • 打赏
  • 举报
回复
先压的数据,先得到

就是先进先出 应该是队列吧

既然这样 用ArrayList比用HashMap好吧
chaorenwopashei 2008-04-30
  • 打赏
  • 举报
回复
看不懂你们是什么意思呢啊
云上飞翔 2008-04-30
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 liuxwyygy 的回复:]
有没有功能再好点的呢?
要实现的功能就是先用Put()方法来压数据,然后再用Get()方法来得到数据,条件是先压的数据,先得到。
[/Quote]
答:不明白你的真正意图与要求。有两点不明白
1)"先压的数据,先得到",我想问的是,这是不是一个“栈”的要求呢?
2)为什么要:
public byte[] Get() ;
public void Put(byte[] bty)
为什么要这样设计,并要强制Object 转换成byte[],,这样是很危险的做法啊。
为何不直接用Object呢?
即:public ObjectGet() ;
public void Put(Object o)
为何不这样呢?我不明白。
panxuan 2008-04-30
  • 打赏
  • 举报
回复
7楼的正是。
anminliu 2008-04-30
  • 打赏
  • 举报
回复


用数组比较快吧 利用下标进行控制咯
luren85 2008-04-30
  • 打赏
  • 举报
回复
向下类型转换,也有成为强制转换
(byte)object
xinyan0321 2008-04-30
  • 打赏
  • 举报
回复
用数组比较快吧 利用下标进行控制咯

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧