Как добиться динамического связывания с ArrayList<T> в Java?
Похоже, ArrayList в Java не поддерживает динамическое связывание. Когда я попытался сделать следующий код, он дал ошибку времени компиляции.
Код:
class Value
{
<some variables>
<some methods>
}
class IntegerValue extends Value
{
int value;
}
class CharacterValue extends Value
{
char value;
}
class Main{
ArrayList<Value> values = null;
public static void main(String args[])
{
swtich(args[1])
{
case "integer":
values = new ArrayList<IntegerValue>();
break;
case "character":
values = new ArrayList<CharacterValue>();
break;
default:
values = new ArrayList<Value>();
}
}
}
Похоже, ArrayList не поддерживает динамическое связывание, но Array поддерживает. Когда я сделал Value[] values = new IntegerValue[maxSize], он компилировался путем создания ссылок типа суперкласса. Но что, если я не знаю размер в начале, а также хочу динамическое поведение со структурой данных (что-то вроде того, что может делать ArrayList)? Есть ли другой способ добиться этого? Есть ли другие структуры данных для этого?
Заранее спасибо.