java中的对象创建并完成

时间:2014-04-24 02:19:09

标签: java core finalize

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 ??

1 个答案:

答案 0 :(得分:0)

如果你想在你刚刚创建的FDemo中引用x,你应该添加一个getX()函数并调用而不是x,就像David Wallace所说的那样。 (我更喜欢使用getter而不是.variable)。

将此添加到您的班级:

public int getX(){
    return x;
}

将问题线改为:

System.out.println("Creat obj No: " + o.getX());

那应该解决它。作为旁注,明确声明您的变量和方法是私有的,公开的还是受保护的是良好做法。