【发布时间】:2013-11-10 22:21:26
【问题描述】:
假设我有一个类包含对从文件读取的 InputStream 或写入文件的 OutputStream 的引用(或者另一个示例,如果您是 Android 开发人员,则为 MediaPlayer 实例)。
知道 Java 是按值传递对象的,当你有类似下面的伪代码时会发生什么?
class MyClass {
InputStream is;
public void read() {
// initialize inputstream here (assume it's reading from a file that contains the alphabet from A-z)
is.read();
}
public MyClass() {
this.read();
}
}
class OtherClass {
MyClass mine = new MyClass();
public OtherClass() {
mine.read();
LastClass lastClass = new LastClass(mine);
}
}
class LastClass {
MyClass his;
public LastClass(MyClass mc) {
his = mc;
his.read();
}
}
我的问题是,既然我们是按值传递对象,它们如何能够维护对开放资源的引用?另外,需要明确的是,在执行所有操作时,存在多少 MyClass 实例?
【问题讨论】:
标签: java android parameter-passing pass-by-reference pass-by-value