Java 中的匿名类用起来十分灵活,它可以有效地减少类的个数,AS3尚未直接支持匿名类实现,不过它支持闭包,可以借助闭包来模拟Java中的匿名类实现:
要实现匿名类的接口
package zzx.test.flex
{
public interface Interface
{
function i1():void;
function i2(name:String):void;
function i3(value:int):int;
function i4():void;
}
}
写一个实现这个接口的辅助类
package zzx.test.flex {
public class InterfaceAnonymouse implements Interface {
private var _i1:Function;
private var _i2:Function;
private var _i3:Function;
private var _i4:Function;
private function anyCall(func:Function, ...params):*{
if(func == null) return null;
return func.call(this, params);
}
public function i1():void {
anyCall(_i1, arguments);
}
public function i2(name:String):void {
anyCall(_i2, arguments);
}
public function i3(value:int):int {
return anyCall(_i3, arguments);
}
public function i4():void {
anyCall(_i4, arguments);
}
public function InterfaceAnonymouse(i1:Function, i2:Function, i3:Function, i4:Function) {
this._i1=i1;
this._i2=i2;
this._i3=i3;
this._i4=i4;
}
}
}
匿名类实现模拟
public function testInterface():void {
var obj:Object = new Object();
obj.name = "mysh";
var inter:Interface=new InterfaceAnonymouse(function():void {
Alert.show("i1");
}, function(name:String):void {
Alert.show("hello, "+name);
}, function(value:int):int{
return (value+100);
}, null);
inter.i1();
inter.i2(obj.name);
Alert.show(inter.i3(200).toString());
inter.i4();
}
总结
优点
缺点
- 接口需要对应写一个辅助类
- 闭包方法没有名字
- 方法闭包缺少完整性约束,如闭包方法参数声明错误需要在运行时才能发现
要使用更灵活的方式,可以看看
AS3 匿名类实现模拟(无类型)
如果哪位仁兄有更好的方法,欢迎拍砖
分享到:
相关推荐
- **查看当前类成员**:`⌘F12` - 显示类内部成员,`⌘i`显示匿名类。 - **重写/实现方法**:`⌃o` - 选择可以重写或实现的方法。 5. **代码导航** - **查找使用**:`⌥F7` - 查找方法在哪被使用,类似Eclipse的...
可以使用`is`关键字进行类型检查,然后使用`as`或`as?`进行安全转换。 9. **扩展函数和扩展属性** 扩展函数和属性在Kotlin中不是类的一部分,因此无法通过反射直接访问。如果需要这些功能,可能需要额外的逻辑来...
- **为自判断链接定义模型类**: 可以定义一个包含可选类型的类,然后在这个类中实现自判断链接。 - **通过自判断链接调用属性**: 使用自判断链接可以安全地访问可选类型的属性。 - **通过自判断链接调用方法**: 同样...
Python虽然没有内置的`switch`语句,但可以通过if-else语句或者第三方库如`func`来模拟实现。下面我们将详细讨论如何在Python中使用if-else、`switch`模拟以及numpy的`piecewise`函数来实现分段函数。 1. **使用if-...
本文将探讨部署性问题的关键点,并提出了一种新的安全服务——跨自治系统(Autonomous System,AS)源地址保护(inter-AS Source Address Protection,iSAP)。技术上,iSAP通过提高一个自治系统内的源地址不成为...
这种攻击方式在分布式拒绝服务(DDoS)攻击中特别普遍,因为它可以提高攻击的匿名性并放大攻击强度,从而使得防御变得更加困难。DDoS攻击长期以来一直是互联网服务提供商(ISPs)面临的首要运营威胁之一。 传统的DDoS...
- **实例对象**:类的实例,每个实例都有自己的状态和行为。 - **类属性**:所有实例共享的属性。 - **实例属性**:属于某个特定实例的属性。 ### 12. 类方法、实例方法、静态方法 - **类方法**:通过@classmethod...
- `IS`和`AS`关键字:掌握这两个关键字在类型判断和转换中的应用。 - 枚举类型以及适用场合:了解枚举类型的特点及其适用场景。 - 字符串理论:深入研究字符串内部实现机制。 5. **深入学习集合特性**: - 索引...
使用Tkinter的`Button`类创建按钮,并通过`command`参数传递一个函数(或匿名函数),以便在按钮被点击时执行相应的操作。同样,使用`place()`方法设置按钮的位置。 抽奖器的核心逻辑包括选择中奖者和模拟滚动效果...
管道通信大致可以分为两种类型:匿名管道和命名管道。其中,命名管道提供了更加强大的功能,如全双工通信、支持网络通信等特性。 #### 二、命名管道的特点与优势 命名管道相比于匿名管道具有更多的功能,主要特点...
由于JavaScript不支持像Java那样的`private`关键字来声明私有方法或属性,开发者通常利用闭包来模拟私有成员。在面向对象编程中,私有成员指的是仅限于对象内部使用的数据和功能,外部无法直接访问。 闭包的产生...
7. **人工智能(Artificial Intelligence)**: 人工智能是使计算机模拟人类智能,实现自我学习和适应能力的科学。 8. **行为分析法(Behavioural Analytics)**: 行为分析法关注用户的实际行为,以了解用户动机、习惯和...
3. **使用虚拟浏览器环境**:例如Headless Browser、BrowserMob Proxy等工具,它们提供了更高级别的匿名性。 4. **修改User-Agent字符串**:通过模拟不同设备的User-Agent字符串来规避检测。 5. **随机化JavaScript...
TMAC使得用户能够在不改变硬件的情况下,自定义电脑、WiFi网卡以及宽带适配器的MAC地址,从而实现某些特定的功能或解决应用限制。 1. **为什么要修改MAC地址**: - **避免限制**:有些网络服务提供商可能会根据MAC...
此外,系统对数据库的初始化也有特定要求,例如TB_TOWNBASICINFO表必须包含一条区记录,USERTABLE中需有一条区管理员记录等。 在发布系统时,考虑到asp.net进程需要调用Office,因此需要配置相应的权限。发布目录需...
3. **模块与包**:导入模块(import、from...import、import...as...)、创建模块和包、sys模块、os模块、math模块等。 4. **面向对象编程**:类的定义、对象的创建与实例化、封装(访问修饰符public、private、...
- 如果应用程序正在通过`<identity impersonate="true"/>`进行模拟,则需要确保匿名用户(通常是IUSR_MACHINENAME)具有相应的权限。 #### 五、结论 通过上述步骤,我们成功地实现了在ASP.NET中使用C#语言操作...