PDA

Просмотр полной версии : Проверка класса на принадлежность к типу? Оо


caseyryan
23.09.2015, 08:31
Встала передо мной такая головоломка:

Есть некий класс, который хранится именно как тип Class, нужно проверить наследует ли он определенный тип, но сделать это без создания экземпляра.
Для наглядности:

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 так же не вариант, потому что нужно проверить интерфейс)

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

Wolsh
23.09.2015, 09:22
describeType().factory.extendsClass.@type

caseyryan
23.09.2015, 09:31
Спасибо)
Про descrybeType что-то даже в голову не пришло. Там как раз и implementsInterface есть.

udaaff
23.09.2015, 09:53
http://jacksondunstan.com/articles/2609

caseyryan
23.09.2015, 10:17
http://jacksondunstan.com/articles/2609

Что-то я не понял. Там есть ссылка на этот класс https://github.com/tschneidereit/SwiftSuspenders/blob/master/src/avmplus/DescribeTypeJSON.as
В котором используется метод descrybeTypeJSON()
Откуда берется сам метод? Оо

Добавлено через 1 минуту
Аа, понял. Неофициальный метод, скрытый от юзеров)) Круто