This code works:
class Test {
static int size;
}
public class E08_ConnectionApp {
public static void main(String[] args) {
Test.size = Integer.parseInt(args[0]);
Test[] test = new Test[Test.size];
for (int i = 0; i < Test.size; i++) test[i] = new Test();
}
}
But when I do THE SAME for other classes, I get the error from the title. I don't understand what's wrong. Please, tell me.
This code doesn't work:
class Connection {
private int ID;
private Connection(int ID) {
this.ID = ID;
print("Connection number " + ID + " created.");
}
static Connection createNewConnection(int ID) { return new Connection(ID); }
Connection getConnection() { return this; }
public int getID() {
return ID;
}
}
class ConnectionManager {
private int size;
public ConnectionManager(int size) {
this.size = size;
for (int i = 0; i < size; i++) connections[i] = Connection.createNewConnection(i + 1);
}
private Connection[] connections = new Connection[size];
public Connection getAvailableConnection() {
for (int i = 0; i < size; i++)
if (connections[i] != null) {
Connection temp = connections[i].getConnection();
connections[i] = null;
print("Connection #" + temp.getID() + " fetched.");
return temp;
}
print("No connections available...");
return null;
}
}
public class E08_ConnectionApp {
public static void main(String[] args) {
ConnectionManager connectionManager = new ConnectionManager(Integer.parseInt(args[0]));
}
}
When debugging, I get an error from the title in this line:
for (int i = 0; i < size; i++) connections[i] = Connection.createNewConnection(i + 1);
I'm 95% sure that this error is because connections, although has space allocated for it (an array of size 5, which is an argument of the program), contains null references to Connection objects. But what I'm trying to do is actually initialize this array, to attach array references to actual objects. If I'm doing it wrong, what is the right way?
I'm thinking about some bad settings in my project or maybe IntelliJ IDEA bug, but the latter is highly unlikely.
Thanks in advance for your answers.
I tried google the error and thinking for myself, I tried various ways to reproduce the problem, but in Test everything works as expected...
It is simply because the array was created before your constructor:
(Rearranged the code slightly)
Those initialisation statements (e.g.
private Connection[] connections = new Connection[size];) are performed before your Constructor logic. Which means, when it tried to create theconnectionsarray,sizeis still 0, hence the array is created with 0 size.The proper way is