Динамическое создание объектов
Хотел бы узнать, почему этот код не скомпилируется, и где можно подробнее почитать про динамическое создание объектов в java?
Объекты создаются и исчезают во время работы приложений. А сам код компилируется до запуска приложения, соответственно, я думаю, что этот код не компилируется из-за того, что он пытается засунуть в массив объекты, которых еще не существует на момент компиляции.
public class Solution {
public static void main(String[] args) {
Car[] arr = {new Car(), new Car()};
}
public class Car {
}
}
Ответы (1 шт):
Так компилируется(- значит и работает)
package helpso_stat;
/**
*
* @author papa
*/
public class HelpSO_stat {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Car[] arr = {new Car(), new Car()};
}
public static class Car {
}
}
Не компилировалась - потому что не нестатичная переменная(внутри это конечно адрес в памяти,указывающий на блок элементов(массив)) не может быть записана в статичной области(main()).Динамическое означает что все так сказать кирпичики класса(его численные параметры и байт-коды методов) будут считываться JVM+JRE(Java Runtime ... - платформой Java) вовремя работы программы,а скажем не будут жестко записаны компилятором в главный модуль)Типа <статичный обект>:=create <Car адрес в файле>,<динамическое>:= new <строка> "Car".JVM ищет файл Car.class считывает кирпичики - вот и обьект)