java bean public 成员_JavaBean的概述

一.什么是JavaBean

JavaBean是一种规范,也就是对类的要求。它要求Java类的成员变量提供公有getxxx/setxxx方法,这样的成员变量被称之为JavaBean属性。成员变量也必须是私有的。

JavaBean还要求类必须提供仅有的并且是公有的无参构造器,例如:public User() {…},没有提供一个构造器,默认提供公共无参构造器。(为什么在JavaBean中要提供无参构造器,因为在JavaWeb中,在创建对象时会根据类名创建对象,就要用到反射来创建Class.forName("类的全路径").newInstance(),这里使用的构造方法就是无参构造方法。还有就是Struts里面,Action也要写无参构造,因为web容器也会根据struts.xml中配置的Action类名来创建对象。)

User.java

package cn.itcast.domain;

public class User {

private String username;

private String password;

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

}

去掉get或者set后的方法名再首字母小写就是这个类的属性了。

如getPassword() 方法的属性就是password。但是这只是针对这种格式的getPassword()方法。

二.JavaBean属性

JavaBean属性被分为四种:

单值属性:比如String name等

索引属性:操作数组,其中可能定义两套get,set,一个是针对数组,一个是针对数组元素。

关联属性:如果当前属性值改变时,它就通知所以相关联的属性,说我的值改变了,但是其它相关属性没有权利阻止改变。

限制属性:如果当前属性值改变时,它就通知所以相关联的属性,说我的值改变了,如果其中有一个相关属性阻止当前属性值改变时,当前属性值就不能够改变。

这里只介绍最简单的并且常用的单值属性。

JavaBean属性是具有getxxx/setxxx方法的成员变量。

也可以只提供getxxx方法,这样的属性叫只读属性;

也可以只提供setxxx方法,这样的属性叫只写属性;

如果属性类型为boolean类型,那么读方法的格式可以是get或is。例如名为abc的boolean类型的属性,它的读方法可以是getAbc(),也可以是isAbc();

JavaBean属性名要求:前两个字母要么都大写,要么都小写(这是JavaBean规定死的,如果这样写,在使用struts出现找不到属性异常时,但是还是有解决办法的。JavaBean命名规范验证):

不用管其它格式命名,一般遵循规范写就不会出错,遵循:属性前两个字母要么都大写,要么都小写。(属性是由get/set决定的!)

还有就是不然自己写出来的代码看起来也很丑。

package com.domain;

import java.beans.BeanInfo;

import java.beans.Introspector;

import java.beans.PropertyDescriptor;

class Test{

private String AA;

private String Bb;//错误的JavaBean属性

private String cC;//错误的JavaBean属性

private String dd;

public String getAA() {

return AA;

}

public void setAA(String aA) {

AA = aA;

}

public String getBb() {//错误的JavaBean属性

return Bb;

}

public void setBb(String bb) {

Bb = bb;

}

public String getcC() {//错误的JavaBean属性

return cC;

}

public void setcC(String cC) {

this.cC = cC;

}

public String getDd() {

return dd;

}

public void setDd(String dd) {

this.dd = dd;

}

}

public class JavaBean_02 {

public static void main(String[] args)throws Exception {

BeanInfo beanInfo = Introspector.getBeanInfo(Test.class);

PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();

for(int i=0;i

System.out.println(pds[i].getName());

}

}

}

/*打印出来为: AA bb cC dd */

JavaBean可能存在属性,但不存在这个成员变量,这也是可以的。例如:

public class User {

public String getUsername() {

return "zhangSan";

}

}

上例中User类有一个名为username的只读属性!但User类并没有username这个成员变量!

还可以更变态一点:

public class User {

private String hello;

public String getUsername() {

return hello;

}

public void setUsername(String username) {

this.hello = username;

}

}

上例中User类中有一个名为username的属性,它是可读可写的属性!而User类的成员变量名为hello!也就是说JavaBean的属性名取决与方法名称,而不是成员变量的名称。但通常没有人做这么变态的事情。

总结JavaBean的规范: 1. 必须要有一个公有无参构造器 2. 提供公有get/set方法,如果只有get方法,那么这个属性是只读属性! 3. 属性:有get/set方法的成员,还可以没有成员,只有get/set方法。属性名称由get/set方法来决定!而不是成员名称,如果有成员变量时,成员变量是私有的! 4. 方法名称满足一定的规范,那么它就是属性!boolean类型的属性,它的读方法可以是is开头,也可以是get开头! 5. 类的修饰符也是公共的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值