Question

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); 
        } 
    }
}

In the line i have commented, the value of x always shows 0(value of x in object ob), why isnt showing the value of object o?? i know if i use o.x i ll be getting the value of x in object o. But still in this code why does it show the value of abject ob rather than object o??

Was it helpful?

Solution

If you want to reference the x in the FDemo you've just created, you should add a getX() function and call that instead of x, like David Wallace said. (I prefer using getters instead of .variable).

Add this to your class:

public int getX(){
    return x;
}

And change your problematic line to this:

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

That should fix it. As a side note, it's considered good practice to explicitly declare whether your variables and methods are private, public or protected.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top