Типы объектов определяются во-время выполнения? Почему тогда нельзя скомпилировать так? (Тип объекта ведь ещё неизвестен, вроде как).
class Solution {
	public static void main(String[] args) {
		String object = new Solution(); //	ошибка компиляции (несоответствие типов)
	}
}