getter/setter是再简单不过的东西了,很多程序语言中都有。说起来它们的用以就是将属性封装保护起来,而又对外提供一对取值和赋值的方法。
我是先有的Java基础,再学习Flex里的ActionScript的,最初写VO的时候,根本就没有想什么,直接将JavaBean"翻译"成VO。
JavaBean:
public class MyJavaBean implements Serializable, Cloneable {
private String str;
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
}
翻译成AS后:
[Bindable]
[RemoteClass(alias="MyJavaBean")]
[Bindable]
public class MyVO{
private var str:String;
public function getStr():String {
return str;
}
public function setStr(str:String):void {
this.str = str;
}
}
使用起来一切正常。
但是,在一些书上的代码中都可以看到类似
public function get str():String
这样的代码,开始不太明白这个"get"是怎么回事,是不是印刷的不好,怎么后面有个空格呢?后来,看到很多网上代码也是如此,才特意去找了些资料。
于是才得知AS里本是这样写getter/setter的
[Bindable]
[RemoteClass(alias="MyJavaBean")]
[Bindable]
public class MyVO{
private var _str:String;
public function get str():String {
return _str;
}
public function set str(str:String):void {
_str = str;
}
}
由于有了get和set这两个关键字,似乎AS这次支持不同参数的同名函数重载了。
当然,之前我想当然的哪种类似Java的写法也是可以的。不过这两种方式的使用方法可是不同的。第二种方式,在使用的过程中是直接点取属性使用的,就好像这个类中存在一个public的str属性一样:
myVO2.str = myVO1.str;
这样一来,和直接写成
public var str:String;
还有什么分别呢?(指的是方法中只是直接取值、赋值,没有更多运算的大多数情况下)
更让我不可思议的是,在一篇课程中居然还写了,Java1.7开始也要变成这样的getter/setter方式了! 我的天呀!!
直到一天,研究绑定的时候,我希望将画面的控件与VO中的属性绑定。
当由控件取值给VO时,可以写成
BindingUtils.bindSetter(model.setCode,view.txtCode,"text");
但由VO取值给控件赋值时,却怎么也写不出来了,没有bindGetter方法,bindProperty似乎又不好用。明明在函数说明中写着第4个参数可以是getter方法,但死活不灵。
突然,我意识到了两种getter的写法,如果改用后者,那么自然轻松搞定,因为它用起来本身就好似是public的属性吗。于是才意识到原来类Java写法虽然也兼容(因为他本来就是一种普通的函数的写法),但至少在这里会遇到问题。改吧!那和public属性比起来又有何分别呢?(我这里都是单纯的取值/赋值操作,没有计算)
后来,终于在一篇讲述BlazeDS的文章中得知,VO的属性用public的,比用getter/setter的速度(与Java通信的速度)要快些,再加之官方的各种例子里都是直接写成public,至此我决定干脆2种getter/setter方法都不用了,VO的属性统统public。
分享到:
相关推荐
例如,`[Bindable]`元数据告诉Flex编译器,某个变量、属性或getter/setter方法需要支持数据绑定。这意味着当这些元素的值发生变化时,编译器会自动生成相应的事件处理代码,确保与之绑定的其他组件能实时反映这些...
最后,文档介绍了Flash Builder 4的一些新特性,如状态编辑器、getter/setter/event handler代码生成器、性能分析器和调试器,这些新工具为Flex开发提供了更多便利。 作者介绍了自己是Adobe系统公司的一名平台布道...
- **Getter/setter和事件处理函数代码生成**:这些特性在Flex4的高级版本中可用,可以减少手工编写样板代码的工作量。 - **模板支持**:Flex4的高级版本支持模板功能,可以简化常见任务的实现。 - **基于状态的代码...
这个类包含了字段和getter/setter方法,用于存储和访问数据。 数据交换通常通过HTTP请求完成,Flex使用HTTPService发送请求到Java服务器,Java服务器处理请求,然后返回响应。响应可以是一个JSON或XML格式的数据,...
通过对 Flex 2 中元数据标签 `[Bindable]` 和 `[ArrayElementType]` 的详细介绍,我们可以看到这些标签在实际开发中的重要作用。它们不仅可以提高代码的可维护性和可读性,还能帮助开发者更高效地管理和同步数据。...
"as get set类生成工具"是一个专门针对ActionScript开发的辅助工具,它旨在帮助开发者快速创建并管理具有getter和setter方法的类。在面向对象编程中,getter和setter方法用于获取(get)和设置(set)对象的属性值,...
- `Person.java`:表示个人对象,包含id、name、age、sex和password属性以及相应的getter和setter方法。 - `PersonService.java`:提供获取人员列表的方法,返回一个包含多个Person对象的ArrayList。 2. 在...
1·生成Geter 和Setter以后 如果Format Code 可能会导致生成的Getter 和Setter无法使用 2·会导致Flex Builder 死机(1/4 次数/小时) 【建议】功能还是很强大的,介于FB3做的实在很屎,可以使用FDT或者安装此插件
若变量通过getter/setter方法读写,则其命名应以下划线“_”开头。布尔类型的变量建议以“can”、“is”或“has”开头,以增强语义的明确性。常量则应全部使用大写字母,并以下划线“_”分隔单词。 ### 方法 方法...
- 无参数的方法应使用getter/setter形式,如`label`,但计算密集型方法应使用更具描述性的名称,如`findFooBar()`, `calculateFooBar()`。 - 子类覆盖基类方法时,基类方法前加`$`,标记为`final`,仅调用基类方法...
可以为getter或setter函数添加`[Bindable]`元数据,如: ```actionscript public var ss:Object = {value: "aaa"}; [Bindable] public function get gg():String { return ss.value; } public function set gg...
创建一个公告类(NoticeInfo),包含属性如title、author、content和date,并提供getter和setter方法。接着,编写一个服务类(如DataServiceImpl),使用Java的JDBC库连接到SQLServer数据库,执行SQL查询,将查询...
无参方法推荐实现为getter/setter。覆盖基类方法时,在基类方法名前加`$`符号,子类方法需标记为`final`,仅用于调用基类方法。 #### 六、事件处理器与参数命名 **事件处理器命名:** 后缀添加`Handler`,如`...
- **步骤三**:定义数据成员,并提供getter/setter方法。 - **步骤四**:重写`toString()`和`clone()`方法。 ### 13. 获取运行环境信息 - **示例**:获取操作系统信息。 ```actionscript flash.system....
6. **getter和setter方法**:提供对目标图形的访问。 #### 结论 通过上述示例代码,我们了解了如何在Flex中实现基本的滤镜切换效果。这种技术不仅可以用来美化用户界面,还可以提高应用程序的互动性和用户体验。...
当我们使用`[Bindable]`元数据标签标记一个类的成员变量时,Flex编译器会自动为这个变量生成相关的访问器(getter和setter)。例如,在提供的代码段中,`list`变量被标记为`[Bindable]`: ```actionscript public ...
- 当应用于整个类时,称为对象级别绑定,类中的所有公有变量和具有 setter/getter 的函数都可用于绑定。 此外,Flex 还提供 `BindingUtils` 工具类,用于执行动态绑定操作,例如 `BindingUtils.bindProperty(source...
2. **定义Employee类**:在com.sample包下创建Employee类,包含姓名(name)、年龄(age)和电子邮件(email)等属性及其相应的getter和setter方法。 3. **创建EmployeeService类**:同样位于com.sample包下,定义...
- **代码模板**: 自动生成常用的代码结构,如 getter/setter 方法。 - **元数据代码补全**: 支持 Flex 元数据的自动完成。 - **语法错误检查**: 实时检测并标注代码中的语法错误。 - **查找引用**: 快速定位代码中的...