Can anyone tell me how to count the number of instances of a class?
Here’s my code
public class Bicycle { //instance variables public int gear, speed, seatHeight; public String color; //constructor public Bicycle(int gear, int speed, int seatHeight, String color) { gear = 0; speed = 0; seatHeight = 0; color ="Unknown"; } //getters and setters public int getGear() { return gear; } public void setGear(int Gear) { this.gear = Gear; } public int getSpeed() { return speed; } public void setSpeed(int Speed){ this.speed = Speed; } public int getSeatHeight() { return seatHeight; } public void setSeatHeight(int SeatHeight) { this.seatHeight = SeatHeight; } public String getColor() { return color; } public void setColor(String Color) { this.color = Color; } }//end class public class Variable extends Bicycle { public Variable(int gear, int speed, int seatHeight, String color) { super(gear, speed, seatHeight, color); } }//end class public class Tester { public static void main(String args[]){ Bicycle bicycle1 = new Bicycle(0, 0, 0, null); bicycle1.setColor("red"); System.out.println("Color: "+bicycle1.getColor()); bicycle1.setSeatHeight(4); System.out.println("Seat Height: "+bicycle1.getSeatHeight()); bicycle1.setSpeed(10); System.out.println("Speed: "+bicycle1.getSpeed()); bicycle1.setGear(6); System.out.println("Gear: "+bicycle1.getGear()); System.out.println("");//space Bicycle bicycle2 = new Bicycle(0, 0, 0, null); bicycle2.setColor("black"); System.out.println("Color: "+bicycle2.getColor()); bicycle2.setSeatHeight(6); System.out.println("Seat Height: "+bicycle2.getSeatHeight()); bicycle2.setSpeed(12); System.out.println("Speed: "+bicycle2.getSpeed()); bicycle2.setGear(6); System.out.println("Gear: "+bicycle2.getGear()); System.out.println("");//space }//end method }//end class
The class variable is to be used to keep count of the number of instances of the Bicycle class created and the tester class creates a number of instances of the Bicycle class and demonstrates the workings of the Bicycle class and the class variable. I’ve looked all over the internet and I can’t seem to find anything, could someone show me how to do it please, thanks in advance ๐
Advertisement
Answer
Since static
variables are initialized only once, and they’re shared between all instances, you can:
class MyClass { private static int counter; public MyClass() { //... counter++; } public static int getNumOfInstances() { return counter; } }
and to access the static field counter
you can use MyClass.getNumOfInstances()
Read more about static
fields in the JLS – 8.3.1.1. static Fields:
If a field is declared
static
, there exists exactly one incarnation of the field, no matter how many instances (possibly zero) of the class may eventually be created. Astatic
field, sometimes called a class variable, is incarnated when the class is initialized (ยง12.4).
Note that counter
is implicitly set to zero