моя структура выглядит следующим образом:литья подкласса Субинтерфейса осуществляется SuperClass
interface SuperInterface{}
interface SubInterface extends SuperInterface{}
abstract class BaseClass implements SuperInterface{}
class SubClass extends BaseClass {}
и то, что я хочу сделать, это бросить подкласс Субинтерфейс
SubInterface instanceOfSubClass = (SubInterface) new SubClass();
, но я получаю исключение заброса.
поэтому почему я не могу отличить SubInterface от того, что он расширяет SuperInterface и ничего не добавляет? это просто обертка для суперинтерфейса который реализуется BaseClass
«Почему я не могу отбросить SubInterface, даже если он расширяет SuperInterface и не добавляет ничего» Поскольку «SubInterface» не совпадает с «SuperInterface»: это разные классы. Зачем вам «SubInterface» в первую очередь? –