Ошибка говорит о том, что она не может преобразовать из суперкласса в подкласс
Это верно.Это та же самая причина, по которой вы не можете сохранить Number
в Integer
, например (Number
может быть Double
!)
Если вы знаете , чтоSubclass
возвращается из ProbeFactory.createProbe("type1")
, тогда вы можете разыграть его следующим образом:
Subclass myObj = (Subclass) ProbeFactory.createProbe("type1");
Следует по возможности избегать приведения вниз.Либо вы разрабатываете его так, чтобы вы могли использовать
Superclass myObj = ProbeFactory.createProbe("type1");
, либо вы можете попытаться создать безопасную для типов версию фабрики:
Subclass myObj = ProbeFactory.createSubProbe("type1");