7-1-JavaBean基础
目录
前言
一、什么是JavaBean?
二、访问JavaBean的属性
三、BeanUtils工具
案例:演示使用setProperty()、getProperty()和populate()方法访问JavaBean的属性
总结
前言
在软件开发时,一些数据和功能需要在很多地方使用,为了方便将它们进行“移植”,Sun公司提出了一种JavaBean技术,使用JavaBean可以对这些数据和功能进行封装,做到“一次编写,到处运行”。
一、什么是JavaBean?
JavaBean是Java开发语言中一个可以重复使用的软件组件,它本质上就是一个Java类,为了规范JavaBean的开发,Sun公司发布了JavaBean的规范,它要求一个标准的JavaBean组件需要遵循一定的编码规范,具体如下:
(1)它必须具有一个公共的、无参的构造方法,这个方法可以是编译器自动产生的默认构造方法。
(2)提供公共的setter方法和getter方法,让外部程序设置和获取JavaBean的属性。
示例:
public class Book {private double price;public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}
}
二、访问JavaBean的属性
在讲解面向对象时,经常会使用类的属性,类的属性指的是类的成员变量。在JavaBean中同样也有属性,但是它和成员变量不是一个概念,它是以方法定义的形式出现的,这些方法必须遵循一定的命名规范,例如,在JavaBean中包含一个String类型的属性name,那么在JavaBean中必须至少包含getName()和setName()方法中的一个,这两个方法的声明如下所示:
public String getName(){...}
public void setName(String name){...}
getName()方法:称为getter方法或者属性访问器,该方法以小写的get 前缀开始,后跟属性名,属性名的第一个字母要大写,例如,nickName属性的getter方法为getNickName()。 setName()方法:称为setter方法或者属性修改器,该方法必须以小写的set 前缀开始,后跟属性名,属性名的第一个字母要大写,例如,nickName属性的setter方法为setNickName()。
如果一个属性只有getter方法,则该属性为只读属性,如果一个属性只有setter方法,则该属性为只写属性,如果一个属性既有getter方法,又有setter方法,则该属性为读写属性。通常来说,在开发JavaBean时,其属性都定义为读写属性。
需要注意的是,对于JavaBean属性的命名方式有一个例外情况,如果属性的类型为boolean,它的命名方式应该使用is/set而不是get/set。例如有一个boolean类型的属性married,该属性所对应的方法声明如下所示:
public boolean isMarried(){...}
public void setMarried(boolean married){...}
从上面的代码可以看出,married属性的setter方法命名方式没有变化,而getter方法变成了isMarried()方法 ,当然,如果一定要写成getMarried()也是可以的,只不过isMarried()更符合命名规范。
示例:
public class Student {private String sid;private String name;private int age;private boolean married;// age属性的getter和setter方法public int getAge() {return age;}public void setAge(int age) {this.age = age;}// married属性的getter和setter方法public boolean isMarried() {return married;}public void setMarried(boolean married) {this.married = married;}// sid属性的getter方法public String getSid() {return sid;}// name属性的setter方法public void setName(String name) {this.name = name;}public void getInfo() {System.out.print("我是一个学生");}
}
三、BeanUtils工具
大多数Java程序开发人员过去习惯于创建JavaBean,然后通过调用JavaBean属性对应的getter和setter方法来访问属性。但是,由于各种Java工具和框架层出不穷,并不能保证属性对应的getter和setter方法总能被调用,因此动态访问Java对象的属性是十分必要的,为此,Apache软件基金会提供了一套简单、易用的API——BeanUtils工具。
BeanUtils工具包的官网首页地址为“http://commons.apache.org/proper/commons-beanutils”,登录到官网首页后,单击左边菜单栏【BEANUTILS】【Download】选项,即可跳转到BeanUtils的下载页面,如下图所示。
解压下载后的文件便可获得BeanUtils开发所需的JAR包。需要注意的是,BeanUtils工具包还需要一个logging包来配合使用,logging包中包装了各种日志API的实现,感兴趣的读者可以进入官网(http://commons.apache.org/proper/commons-logging)下载。
BeanUtils工具中封装了许多类,其中最核心的是org.apache.commons.beanutils包下的BeanUtils类,接下来,针对BeanUtils类的常用方法进行简单的介绍,具体如表所示。
案例:演示使用setProperty()、getProperty()和populate()方法访问JavaBean的属性
总结
7-1-JavaBean基础相关推荐
- php 赋值 递增,PHP 基础(赋值及函数)
开端<?php>结尾 弱类型语言 定义变量的时候 不需要 声明 但是 每一个变量前 都必须 加$ 符号 储存文件按 统一放到 安装文件夹下面的 WAMP 下面 的WWW ...
- java私塾 设计模式 视频_[章节]Java Web开发理论部分视频教程 之 04 mvc设计模式详解视频教程 - 我的学习中心 - 私塾在线 - 只做精品视频课程服务...
第01节课:进行整体课程概览:复习事件机制:复习表现层的功能:复习表现层的开发 第02节课:Web应用的基础知识,包括:Internet.Http.IP.Port.MIME规范.Web客户端和服务端. ...
- Java程序员从笨鸟到菜鸟全部博客目录
本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.NET/csh624366188 欢迎关注微信账号:java那些事:csh624366188.每天一篇java相关的文章 大 ...
- JAVA程序员从菜鸟到菜鸟
CSDN十大风云博客专栏评选结果公布! 下载频道分享季1:分享经典,领取积分! CSDN博客皮肤评选活动火爆开启! [置顶] Java程序员从笨鸟到菜鸟之(序 ...
- Java程序员由笨鸟到菜鸟 电子版书正式发布 欢迎大家下载
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 欢迎关注 ...
- Java工作五个月了_总结到ict5个月以来的工作
2006年12月19日18:53:39 引言: 06.7.17来到这里,回想5个月前刚步入ict的时候,心情是如此的欢快,因为终于可以接触到实际的项目了,终于可以有机会系统的学习J2EE了!终于不用担 ...
- 可爱的javaee:非框架架构漫谈
概述 你可以说可爱的php ,可爱的ror ,可爱的python ,甚至可爱的.net ,但是javaee ?他太复杂了.相比前三种技术,javaee 的技术体系更全面.更规整也更复杂,他的复杂性也让 ...
- 什么是 Java 组件技术?
什么是 Java 组件技术? developerWorks Java technology 专区维护了 标准 Java 组件技术 的完整词 汇表.下面是每个 Java 平台版本的组件.可选包和扩展的部 ...
- JAVA面试208道实用题,答案持续更新整理。
一.JAVA基础 1. JDK 和 JRE 有什么区别? JRE(java Runtime Environment)是java运行时环境,包含了java虚拟机,java基础类库,是java语言编写的程 ...
- javabean_企业JavaBean,基础架构预测以及更多行业趋势
javabean 作为我在具有开放源代码开发模型的企业软件公司担任高级产品营销经理的角色的一部分,我定期发布有关产品营销人员,经理和其他影响者的开源社区,市场和行业趋势的更新. 以下是该更新中我和他们 ...
最新文章
- 敲的php代码怎么预览,php代码实现文件的预览
- redmine + git
- HTML导航页面结构
- 1049.(*) Counting Ones
- ap协议java_AP计算机科学A:Java编程类和对象
- Abstract Factory(抽象工厂)--对象创建模式
- 与其他.Net异步模式和类型进行互操作
- leetcode 10 --- 正则表达式匹配
- 简单、有效、全面的Kubernetes监控方案
- Kiwi浏览器 MIUI禁第三方广告 ADB停用系统应用
- 17.高性能MySQL --- MySQL 分支与变种
- 深入浅出通信原理知识点10
- 判断一个数字是否为素数 C++实现
- 信号转换 | 如何将正弦波转换成方波?
- 卖计算机英语对话,英语购买电脑情景对话.doc
- 10款3D桌面推荐,很不错哦
- 微信企业号开发(1)--基础入门
- 资源教程[外贸人zencart自助建站视频教程]:第四课(5)zencart更换模板
- 【计算几何】向量叉积和凸包 | 引射线法 | 判断点是否在多边形内部 | 葛立恒扫描法 | Cross Product and Convex Hul
- 从业10多年,我总结了这几款程序员必备实用工具
热门文章
- Eclipse安装UML 插件
- 95-10-190-启动-DynamicConfigManager
- 【java】Thread.Sleep 与 Thread.onSpinWait
- [Flink] The file LOG does not exist on the TaskExecutor
- Kafka 与Spark的集成
- 95-190-032-源码-window-CountWindow
- 【Java】indexOf 方法区分大小写
- 【hadoop】ipc.Client: Retrying connect to server: xxx:8020. Already tried 37 time(s) RetryPolicy[Multi
- 【flume】flume的安装配置理解
- java 时间戳转换成时间_java 10位时间戳 转成时间