2016-01-15 2 views
0

У меня проблема с моим кодом, где мне нужно вызвать метод подкласса, используя объект суперкласса. Есть ли возможный способ сделать это или работать? Я полностью в тупике, и на мой вопрос нет полезного ответа.Как я могу вызвать метод подкласса, используя объект суперкласса?

String basicCommand = commands[0]; 
    String advCommand = commands[1]; 
    String perCommand = commands[2]; 
    if (objectName.get(advCommand)instanceof Circle){ 
     objectName.get(advCommand); 
     //.changeSize(reader.convertToInt(perCommand)); 

advcommand имеет тип Shape который является суперкласс класса Circle, и метод changesize() находится в пределах Circle.

* Данные находятся в пределах хэш-карты.

+1

Возможный дубликат [Кастинг объекты в Java] (http://stackoverflow.com/questions/5306835/casting-objects-in-java) – rbp

+0

Да, [downcasting] (http://stackoverflow.com/a/380828/1810429). – J0e3gan

ответ

0

вам нужно создать его экземпляр на основе имени класса:

Class cc = Class.forName(advCommand); 
    Circle c = (Circle)c.newInstance(); 
    c.changeSize(reader.convertToInt(perCommand)); 
+0

Неверное произнесение. 'advCommand' является' String' –

+0

хорошим уловом. исправлено – rbp

+0

You Genius Man! Большое вам спасибо, что это работает, но код немного отличается, поскольку вы должны получить объект из хэш-карты, я понятия не имел, что вам нужно было его бросить, если возможно, вы могли бы более подробно объяснить что-то более конкретно и что он делает? '((Circle) objectName.get (advCommand)). ChangeSize (reader.convertToInt (perCommand));' –

Смежные вопросы