После прочтения пояснений в ваших комментариях, тот факт, что вы не можете использовать массив, но можете использовать `ArrayList '...
Вместо создания нового имени переменной (или элемента массива, илизначение карты) для каждого BankAccount
вы, вероятно, можете использовать область действия в своих интересах.
Область действия - это концепция, согласно которой ссылка на переменную имеет значение только в определенной части кода.Если вы объявите переменную внутри метода, эту переменную можно увидеть только внутри этого метода.Переменная, объявленная в блоке (цикл, оператор if и т. Д.), Видна только из этого блока.
Поля класса имеют различную область видимостиэто можно настроить с помощью ключевых слов ( см. здесь ).
Например:
public class ScopeExample
int classInt = 10;
public void method() {
int methodInt = 0; // This integer can only be seen by code in
// this method
}
public void method2() {
//doSomething(methodInt) // This line won't compile because i is
// declared in a different method!
doSomething(classInt); // This line will compile and work
// because x is declared in the class that
// contains this method.
int index = 0;
while (index < 3) {
int whileInt = index; // This integer can only be seen from within
// this while loop! It is created each
// loop iteration.
doSomething(whileInt);
}
doSomething(whileInt); //This line won't work, whileInt is out of scope!
}
public doSomething(int a) {
System.out.println(a);
}
}
ТАК!Если вы создаете объект BankAccount
в цикле, вам не нужно беспокоиться о создании нового имени для следующего.Каждый раз, когда цикл повторяется, он становится новым объектом (когда вы его создаете).
Если вам нужно его сохранить, вам определенно потребуется использовать массив или другую структуру данных (ArrayList
!).
Основываясь на идее области действия, вы можете иметь одинаковое имя переменной для каждого нового BankAccount
.Ссылка на переменную не гарантируется в паре с объектом, на который она ссылается.Это удобно для программиста, так что вам не нужно знать точный адрес памяти, в котором он хранится.
Например:
public static void main(String[] args) {
Object o;
int i = 0;
while (i < 5) {
Object reference = new Object(); // Create a new Object and store
// it in 'reference'
o = obj; // The Object 'o' now refers to the object in 'reference'
i++;
}
System.out.println(o); // This should print information about the
// LAST object created.
}
Новый созданный Object
в цикле не принадлежит к 'obj'.Вы, как программист, используете obj, чтобы указать на Object
.Программа на самом деле не знает, что означает объект, кроме того факта, что он указывает на объект, который вы просто created
.
Наконец, вы можете использовать это вместе с ArrayList
, чтобы сделать вашу жизнь проще.
public static void main(String[] args) {
// Our new ArrayList to hold our objects!
ArrayList<Object> stuff = new ArrayList<Object>();
int i = 0;
while (i < 5) {
Object obj = new Object(); // Create an object and make obj point to it.
stuff.add(obj); // Put "the object that 'obj' points to" in 'stuff'.
i++;
}
// This loop goes through all of the Objects in the ArrayList and prints them
for (int index = 0; index < stuff.size(); index++) {
System.out.println(stuff.get(i)); // This will print a single
// object in the ArrayList each time.
}
}