Если вы не можете создать его экземпляр, вы не можете получить значение одного из его полей.
На самом деле, когда вы думаете об этом, это совершенно бессмысленно. Значение поля (т. Е. Ссылка на объект для конкретного Bar
объекта) не существует до тех пор, пока объект Bar
не будет создан. И это происходит только тогда, когда создается экземпляр объекта Foo
.
Это имело бы больше смысла, если бы field
было инициализировано константным выражением Java, но вы не можете сделать это с помощью ссылочного типа (кроме String
).
Единственная возможная комната для маневра здесь - это то, что может быть в состоянии создать экземпляр объекта Foo
опосредованно или с помощью отражения и setAccessible, чтобы нарушить ограничения видимости Java. Но даже тогда вы получаете field
значение конкретного Foo
объекта, который вы создали, а не (бессмысленное) значение поля объекта, которого еще не существует.