Это мой первый вопрос, поэтому, пожалуйста, не сердитесь на меня, если что-то не так.Инициализировать расширенный класс через фабрику базового класса в Java
В чем проблема: У нас есть класс Node. Это базовый класс для класса Item. Таким образом, в основном:
public class Item extends Node
Хорошо, все в порядке. Но у нас также есть класс, назовем его NodeFactory, который содержит статический метод loadNodeAssets, возвращающий узел в результате.
public static Node loadNodeAssets (String path)
В библиотеке, которую я использую, это только способ инициализировать класс узла и загрузить в него активы. Но главная проблема заключается в том, что мне нужно получить экземпляр класса Item, а не Node. Как я мог это сделать?
Item f = (Item)NodeFacory.loadNodeAssets ("...")
Не работает с тех пор, как класс возврата имеет тип Узел, но не товар. В принципе мне нужно построить класс Fish и инициализировать унаследованные поля в классе Node, который расширяет класс Fish. Извините за мой английский. Надеюсь на вашу помощь. Спасибо!
Ну, просто потому, что 'Item extends Node' не означает, что все' Nodes' являются 'Items' (правда, обратное было бы правдой), поэтому вы не можете автоматически вводить' Node' в 'Item' (это может быть любой другой объект, который вообще не похож на «Элемент»). Вместо этого вам может потребоваться скопировать необходимые поля (атрибуты) вручную или с помощью библиотеки сопоставления свойств – ochi