返回信息流目标是编写一个函数,读取文件,得到一个文件内容的数组和数组长度。java的函数只能有一个返回值,因此我想使返回值为数组长度,把数组的引用和文件地址传进去做为参数。
下面的类A是存储数组的,我需要把文件写进去。
class A {
private byte[] data = null;
private int size = 0;
public getData() {
return data;
}
}
读取文件的函数是
public int file2byte(String fileName, byte[] array) {
//other codes
return size;
}
我已经把代码简化成以上。过程是,通过getter得到数组引用,把引用传到函数里,把读出的文件赋给数组引用,并把数组长度作为返回值,大功告成。
可是这样做得到的数组是null,为什么呢?
如果把数组换成对象,同样的操作不会有问题,不都是引用吗,为啥数组就是空?
如果通过setter的方法给数组赋值,没有任何问题,但是数组长度就没办法传出来了。
如果把数组和长度封装成一个类作为返回值,感觉有点小题大做。
这是一条镜像帖。来源:北邮人论坛 / java / #49770同步于 2016/4/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
数组引用问题
skyhjk
2016/4/26镜像同步14 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
就是说getData()={1,2,3}这样并不会改变class里面的数组
【 在 dss886 的大作中提到: 】
: 读了3遍没有读懂你什么意思。。。
肯定啊,因为是get啊,你要改变为什么不用set呢
【 在 skyhjk 的大作中提到: 】
: 就是说getData()={1,2,3}这样并不会改变class里面的数组
我大概懂你了意思了,你是想这样?
A a = new A;
a.getData() = {1, 2, 3};
这么做并不会改变a内部的data变量的值,因为a.getData()只是把a.data的引用拷贝了一份,等效为:
A a = new A;
byte[] data = a.getData();
data = {1, 2, 3};
data 变量一开始指向a.data,后来指向{1, 2 ,3},但a.data并没有指向{1, 2 ,3}
【 在 skyhjk 的大作中提到: 】
: 就是说getData()={1,2,3}这样并不会改变class里面的数组
class A {
private byte[] data = null;
private int size = 0;
public getData() {
return data;
}
public setData(){
xxxxx;
size=xx;
return data;
}
public setSize(int s){
size = s;
}
public getSize(){
return size;
}
}