![]() |
|
||||||||||
|
|||||
|
Регистрация: Mar 2010
Сообщений: 137
|
Есть вот такой вот метод:
public function getByType(childType:IObj):IObj { for each(var tmpEl:IObj in _objList) { if(typeof(tmpEl) == typeof(childType)) { return tmpEl; } } return null; } Таким образом пользователь сможет пихать любого наследника в список, после чего получать его по типу без необходимости знать точный индекс нужного наследника. Простой проверкой вышло, что через typeOf() работать нельзя - он возвращает тип самой ссылки, а не конкретного объекта, на который ссылается и, понятное дело, цикл метода вылетал на первой итерации. Вопрос, собственно... Как вы предложите решить эту проблему? Пока идея такая: Ввести в интерфейс IObj метод getType(), реализация которого обязана будет вернуть тип - можно в строковом виде, но я думаю взять константу, которая будет храниться в статическом классе. В результате вместо typeOf() будем вызывать этот метод и сравнивать элементы через него. Идея достаточно громоздкая и мне кажется, что можно найти более изящное решение. Если будет возможность - предложите свои соображения по этому поводу. |
![]() |
Часовой пояс GMT +4, время: 12:41. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| typeof , абстракция , полиморфизм , тип |
|
|