Показать сообщение отдельно
Старый 23.09.2015, 08:31
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 1  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
The bomb! Проверка класса на принадлежность к типу? Оо

Встала передо мной такая головоломка:

Есть некий класс, который хранится именно как тип Class, нужно проверить наследует ли он определенный тип, но сделать это без создания экземпляра.
Для наглядности:
Код AS3:
package {
	public class SomeClass implements ISomeInterface {
 
		public function SomeClass() {
 
		}
	}
}
 
package {
	public class SomeOtherClass extends SomeClass {
 
		public function SomeOtherClass() {
 
		}
	}
}
 
 
 
package {
	public class Test extends SomeClass {
 
		private var _class:Class = null;
 
		public function Test() {
			_class = SomeOtherClass;
			testIt();
		}
 
		private function testIt():void {
			trace((new _class()) is ISomeInterface); // true, с экземпляром все ок
		}
	}
}
Естественно, создав экземпляр проверить можно легко. А без экземпляра можно ли?
getQualifiedClassName() не катит, так как он вернет имя класса, но никак не скажет наследует ли он другой класс, рекурсивно вызывать getQualifiedSuperclassName так же не вариант, потому что нужно проверить интерфейс)

п.с. Задача скорее из любопытства. Мне, в принципе не в лом создать экземпляр и хранить ссылку на него в переменной. Может кто-то сталкивался с подобной задачей, или тоже хочет поломать голову)