class FDemo {
int x;
FDemo(int i) {
x = i;
}
protected void finalize() {
System.out.println("Finalizing " + x);
}
void generator(int i) {
FDemo o = new FDemo(i);
System.out.println("Creat obj No: " + x); // this line
}
}
class Finalize {
public static void main(String args[]) {
int count;
FDemo ob = new FDemo(0);
for(count=1; count < 100000; count++)
ob.generator(count);
}
}
}
在我评论过的行中,x的值总是显示为0(对象ob中的x的值),为什么不显示对象的值?我知道如果我使用o.x,我将获得对象o中x的值。但仍然在这个代码中为什么它显示abject ob的值而不是object o ??
答案 0 :(得分:0)
如果你想在你刚刚创建的FDemo中引用x,你应该添加一个getX()
函数并调用而不是x,就像David Wallace所说的那样。 (我更喜欢使用getter而不是.variable)。
将此添加到您的班级:
public int getX(){
return x;
}
将问题线改为:
System.out.println("Creat obj No: " + o.getX());
那应该解决它。作为旁注,明确声明您的变量和方法是私有的,公开的还是受保护的是良好做法。