Да, это прямая зависимость. Вам просто не нужно указывать это компилятору, потому что он может посмотреть на сигнатуру метода, который возвращает B
и разрешит класс для вас.
Если компилятор не может найти B
(или метод, который вы хотите вызвать для него), вы получите ошибку во время компиляции об отсутствующем классе.
Во время выполнения, когда вы загружаете класс, он также загружает все классы, указанные в сигнатурах методов (и завершается ошибкой, если они не могут быть найдены).
Также обратите внимание, что сами операторы import
предназначены только для компилятора. Они не влияют на полученный файл класса. Это означает, что если вы импортируете десять классов, которые затем не используете, они не станут зависимостями (компилятор все равно будет жаловаться на их отсутствие в разделе импорта, но они не будут загружены во время выполнения).