Như trong Java, tôi muốn biết liệu tham chiếu của tôi có được khai báo là Giao diện hay không.Cách xác định xem tham chiếu Lớp có phải là giao diện không?
function foo(classRef:Class){
if(classRef.isInterface(){
//something
}
}
Như trong Java, tôi muốn biết liệu tham chiếu của tôi có được khai báo là Giao diện hay không.Cách xác định xem tham chiếu Lớp có phải là giao diện không?
function foo(classRef:Class){
if(classRef.isInterface(){
//something
}
}
Bạn có thể sử dụng AS3 Commons Reflect để có được thông tin này. Chức năng của bạn sẽ trông giống như sau:
function foo(classRef:Class)
{
var type:Type = Type.forClass(classRef);
if (type.isInterface)
{
//something
}
}
Khám phá của riêng tôi. Nếu lớp là giao diện, ngoài XML mô tả trong nút <factory>
, nó sẽ không bao giờ chứa <constructor>
và <extendsClass>
. Vì vậy, đây là một chức năng:
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);
}
Test:
trace(isInterface(IEventDispatcher));
trace(isInterface(Button));
trace(isInterface(int));
trace(isInterface(XML));
trace(isInterface(String));
Output:
[trace] true
[trace] false
[trace] false
[trace] false
[trace] false
cảm ơn, không biết về thư viện đẹp đó –
cảm ơn bạn đã chia sẻ thông tin về thư viện này. – Mady