Допустим, я создаю экземпляр HashMap с SuperClass
в качестве типа значения.Затем я добавляю SubClass
объекты в качестве значений на карту.Когда я извлекаю эти значения из карты, они возвращаются как объекты типа SuperClass
, которые я явно возвращаю к Subclass
:
class SuperClass {}
class SubClass1 extends SuperClass { int one;}
class SubClass2 extends SuperClass { int two;}
class DoSomething {
DoSomething() {
Map<String, SuperClass> map = new HashMap<String, SuperClass>();
map.put("1", new SubClass1());
map.put("2", new SubClass2());
SubClass1 one = (SubClass1) map.get("1");
}
}
. Мне нужно знать, что возвращаемый объект имеетспецифический SubClass
, потому что я хочу получить доступ к методам, которые существуют только в подклассе.Если возвращаемым типом может быть любое количество различных подклассов, считается ли использование instanceof
лучшей практикой для определения типа и приведения?
SuperClass s = map.get("1");
if (s instanceof SubClass1) {
(SubClass1)s.one = 1;
}
Спасибо