`
crabdave
  • 浏览: 1295278 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JavaBean规范学习

    博客分类:
  • Java
阅读更多

JavaBean规范学习

 

      为什么明明用IDE为属性生成的getter/setter方法,应用一运行,还是报找不到某个bean属性的setter或getter方法呢? 要知道,在Sun的网站上那个关于JavaBean规范的PDF文档可是有足足实实的114页啊。难免有些规则有点古怪,至使知名的IDE都难以应对,所以我们还是有必要了解其中二三,来规范我们的JavaBean和解释一些情形。


Sun的关于JavaBean规范见:http://java.sun.com/javase/technologies/desktop/javabeans/docs/spec.html,其中可下载到 JavaBean规范的PDF文档。


实际中的问题
     首先,当然还是要说它的属性及 setter/getter 方法。属性以小写字母开头,驼峰命名格式,相应的 getter/setter 方法是 get/set 接上首字母大写的属性名。多数情况是对的,且当前流行的 IDE(Eclipse、JBuilder) 也都认这个死理,这里 NetBean 值得表扬一下。但要是碰到些遗留的代码中属性名不规范,或者有些人就是顽固,或真是对属性命名犹豫不决时的写下的代码时,那还是有得你研究一下。
     这里来看看 Eclipse 为几个属性生成的 getter/setter 方法吧:

     sName(从 C 转过来的,受匈牙利的影响,认为 Name 是个字符串,所以加个前缀 s)
     getSName()/setSName(String name)
     URL (平时认为是缩略语/专有名词,理当全部大写,这在我们对待 ID 时经常发生的)
     getURL()/setURL(String url) 

     上面第一个由 Eclipse 为我们生成的 getSName()/setSName(String name) 方法,参照 JavaBean 规范来说,其实是错误的。如果出现这样的方法,放到我们的标签(像 Struts 标签,如 ),或是进行 Hibernate/iBatis 那种映射时,你就能收到报 找不到 sName 属性相应的 getter/setter 方法 那样的错误。不是明明有 getSName() 和 setSName(String name),可是方法名错了,正确的版本应该是 getsName() 和 setsName(String name)。

前面首先解释了属性命名不规范产生问题的原因,现在就来更仔细的了解关于 JavaBean 属性及其 getter/setter 方法的约定,有些是硬性的。

 

属性与存取访问的规定

      为 JavaBean 创建属性时,必须牢记:缩略语通常被视为一个独立的单词,而不是单个字母。例如,URL 对应的属性名应该用 url,相应的 getUrl()/setUrl(),所以 ID 还是用 id 作为属性吧,相应的 getId()/setId()。

规范中另一个特别的地方就是,第二个字母为大写的属性名要区别对待。如果属性名的第二个字母是大写的,那么该属性名直接用作 getter/setter 方法中 get/set 的后部分,就是说大小写不变。这就是为什么 sName 对应的存取方法是 getsName()/setsName() 的原因,不能不说这条规则很令人费解。

     属性是首字母大写,次字母小写是,你永远都找不到它的 getter/setter 方法的,对这个属性的使用是会害人的。对于 boolean 类型属性的 getter 方法是 isXxx() 还是 getXxx() 就自己决定了,isXxx() 应该更接近于自然语言,更顺溜些。

      知道了属性及存取方法的规定,那么你即使是面对古老代码,在使用标签来引用或与 Hibernate/iBatis 等进行映射,你就知道该填什么样的属性名了。

      还有一个我们很少碰触到的是关于可索引属性的 getter/setter 方法(这方面 C# 表现的比 Java 要优秀),比如有属性
      private OrderItem[] orderItem;
      那它相应的 getter/setter 除常见的两个外,还有带索引参数的两个版本,如下:
      public OrderItem[] getOrderItem();
      public void setOrderItem(OrderItem[] newArray);
      public OrderItem[] getOrderItem(int index);
      public void setOrderItem(int index, OrderItem orderItem);

 

关于 Bean 导航
      最后就是 Bean 导航的规范,通常用点记法(dot notation) 来引用属性,同时也要注意索引属性的访问。在 Web MVC 的表单中,以及标签中, Jarkata-Commons-BeanUtils 中用得很多。看点记法的示例:

比如像 Struts1 标签:
      <html:text property="stocks[1].code"/>
      会显示出 FormBean 中 stocks 列表的第二个元素的 code 属性,提交就填充到相应的位置上去。

分享到:
评论

相关推荐

    javabean 学习(适合初学者)

    4. **标准接口**:JavaBean 遵循一定的命名约定和标准接口规范,这使得它们可以被其他 Java 组件轻松识别和使用。 #### 三、JavaBean 的作用 1. **简化开发**:通过提供预定义的行为和属性,JavaBean 可以帮助...

    JavaBean知识学习

    JavaBean遵循一定的规范,使得它们可以在多个环境中被轻松地识别和集成。 首先,JavaBean必须是一个公共类(public class),且具有无参数的构造函数。此外,它的属性通常是私有的(private),并提供对应的getter...

    JavaBean学习资料

    JavaBean是Java编程语言中的一种特定类,它遵循一定的规范,用于封装数据并提供属性访问。在JavaWeb开发中,JavaBean通常作为业务逻辑层(Business Logic Layer)的一部分,用来存储和处理数据,同时也可以作为组件...

    JavaBean学习课件1e

    JavaBean遵循特定的命名规范、访问控制和编码标准,使得它们能够容易地被其他Java组件(如Servlet、JSP、EJB等)识别和操作。本课件“JavaBean学习课件1e”旨在帮助初学者深入理解和掌握JavaBean的核心知识。 一、...

    jsp实时聊天系统 javabean的学习……

    而JavaBean是一种遵循特定规范的Java类,主要用于封装业务逻辑,可被其他Java应用程序或JSP页面重用。在JSP中,JavaBean通过`&lt;jsp:useBean&gt;`标签引入,提供数据处理和业务操作的功能。 在聊天系统中,JavaBean通常...

    JavaBean示例

    JavaBean是Java编程语言中的一种特定类,遵循特定的规范,用于封装数据并提供属性访问。这个"JavaBean示例"旨在帮助初学者理解和使用JavaBean。JavaBean主要用于构建Java应用程序的可重用组件,特别是在JavaServer ...

    超全面javaweb教程28天第11,12天 9 JavaBean规范

    超全面javaweb教程28天第11,12天_9_JavaBean规范

    JAVA100例之实例87JavaBean的学习

    在这个实例中,我们学习了JavaBean的基本概念,创建了一个简单的`Student` JavaBean,并在JSP页面上展示了如何使用它。通过深入了解和实践JavaBean,开发者可以更好地构建可维护、可复用的Java应用程序。

    黑马程序员-----javaBean的操作类学习笔记

    1. **JavaBean规范**: - **命名规则**:通常,JavaBean的类名应该以"Bean"结尾,例如`UserBean`。 - **公共无参构造器**:JavaBean需要提供一个公共的无参数构造函数,以便于实例化。 - **封装属性**:JavaBean...

    一个精典实用的jsp+javabean例子

    2. **JavaBean的创建和使用**:学习如何编写符合JavaBean规范的类,包括属性、构造函数、getter和setter方法,并在JSP中实例化和使用JavaBean。 3. **数据传递**:掌握如何在JSP页面和JavaBean之间传递数据,如通过...

    JavaBean课件.rar

    JavaBean是Java编程语言中的一种特定类型,它遵循一套特定的规范,被设计用来作为Java应用程序中的可重用组件。这个“JavaBean课件.rar”压缩包文件显然包含了与JavaBean相关的教学材料,可能是PDF文档、PPT演示文稿...

    JavaBean讲解(上)——代码+笔记

    JavaBean规范定义了一类特殊的Java类,它具有良好的封装性、可重用性和可序列化特性,广泛应用于Web开发、MVC框架以及企业级应用中。 在本教程“JavaBean讲解(上)——代码+笔记”中,我们将深入探讨JavaBean的核心...

    javabean源码

    JavaBean是一种特殊的Java类,它遵循一定的规范,用于封装...这个名为“javabean”的压缩包文件,很可能是为了帮助你学习和实践JavaBean的编写和使用,通过阅读和分析其中的源码,你可以进一步深化对JavaBean的理解。

    使用JavaBean扩展Forms功能

    这通常涉及到定义一个Java类,遵循JavaBean规范,即包含一个无参数的构造函数,以及私有属性和对应的getter、setter方法。例如,我们创建一个名为`MyBean`的JavaBean,用于处理一些业务逻辑: ```java public class...

    javaBean简介.doc

    JavaBean 是 Java 编程语言中的一种特殊类,它遵循特定的编程规范,主要用于封装数据和实现业务逻辑。在MVC(Model-View-Controller)设计模式中,JavaBean 作为 Model 层,是应用程序的数据载体。在传统的Web开发中...

    01_JavaBean讲解(上)2

    1. **JavaBean的创建**:讲解如何编写符合JavaBean规范的类,包括如何定义属性、构造器和getter/setter方法。 2. **属性访问**:介绍如何通过getter和setter方法访问和修改JavaBean的属性值。 3. **Introspector...

    可用的jsp的MD5加密的javaBean

    `JavaBean`是Java编程语言中的一个概念,它是符合一定规范的Java类,主要用于封装数据和业务逻辑,方便组件化开发。JavaBean通常具有默认的构造器,公共的属性(getters和setters),以及可选的操作方法。 在标题...

    JSP课件-javabean的使用教程

    JavaBean是Java编程中的一个核心概念,它是一种符合特定规范的Java类,常用于封装数据和业务逻辑,便于在Web应用程序中重用和管理。在JSP中,JavaBean可以作为数据模型,帮助我们构建动态网页。 **一、JavaBean的...

    webServices学习之二——axis1传递复杂类型javabean

    JavaBean是一种遵循特定规范的Java类,通常用于封装数据并提供getter和setter方法,使得这些数据可以被其他组件访问和操作。在Web服务上下文中,JavaBean常用来表示业务对象,如用户、订单或产品信息。 Axis1支持将...

    nutz生成javabean工具.zip

    - 输入数据源后,Nutz Codematic会分析表结构,自动生成符合JavaBean规范的类,包括属性、getter和setter方法。 - 生成的JavaBean类可以根据需求进行定制,例如添加额外的注解,或者调整访问权限。 4. **提升开发...

Global site tag (gtag.js) - Google Analytics