Come in Java, voglio sapere se il mio riferimento è dichiarato come Interfaccia.Come identificare se il riferimento di classe è un'interfaccia?
function foo(classRef:Class){
if(classRef.isInterface(){
//something
}
}
Come in Java, voglio sapere se il mio riferimento è dichiarato come Interfaccia.Come identificare se il riferimento di classe è un'interfaccia?
function foo(classRef:Class){
if(classRef.isInterface(){
//something
}
}
È possibile utilizzare AS3 Commons Reflect per ottenere queste informazioni. La funzione sarebbe quindi simile a questa:
function foo(classRef:Class)
{
var type:Type = Type.forClass(classRef);
if (type.isInterface)
{
//something
}
}
La mia esplorazione. Se la classe è l'interfaccia, rispetto alla descrizione XML nel nodo <factory>
, non conterrà mai <constructor>
e <extendsClass>
. Quindi, si tratta di una funzione di:
private function isInterface(type : *):Boolean {
var description : XML = describeType(type);
return (description.factory[0].descendants("constructor").length() == 0
&& description.factory[0].descendants("extendsClass").length() == 0);
}
prova:
trace(isInterface(IEventDispatcher));
trace(isInterface(Button));
trace(isInterface(int));
trace(isInterface(XML));
trace(isInterface(String));
uscita:
[trace] true
[trace] false
[trace] false
[trace] false
[trace] false
grazie, non sapeva che bella libreria –
grazie per la condivisione di informazioni su questa libreria. – Mady