JavaBean
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaBean,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4149字,纯文字阅读大概需要6分钟。
内容图文
![JavaBean](/upload/InfoBanner/zyjiaocheng/855/317b91b12c024881b5fcb302e629c283.jpg)
1,JavaBean是一种规范,也是对类的要求。
它要求Java类的成员变量提供getting和setting的方法,这样的成员变量我们称之为JavaBean属性。
比如:
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; } }
2,JavaBean属性
JavaBean属性是具有getter/setter方法的成员变量。
也可以只提供getter方法,这样的属性叫只读属性;
也可以只提供setter方法,这样的属性叫只写属性;
如果属性类型为boolean类型,那么读方法的格式可以是get或is。
例如名为abc的boolean类型的属性,它的读方法可以是getAbc(),也可以是isAbc();
JavaBean属性名要求:前两个字母要么都大写,要么都小写:
3,内省
1)内省的目标是得到JavaBean属性的读、写方法的反射对象,通过反射对JavaBean属性进行操作的一组API。例如User类有名为username的JavaBean属性,通过两个Method对象(一个是getUsenrmae(),一个是setUsername())来操作User对象。
如果你还不能理解内省是什么,那么我们通过一个问题来了解内省的作用。现在我们有一个Map,内容如下
public class User { private String username; private String password; public User(String username, String password) { this.username = username; this.password = password; } public User() { } 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; } public String toString() { return "User [username=" + username + ", password=" + password + "]"; } }
现在需要把map的数据封装到一个User对象中!User类有两个JavaBean属性,一个叫username,另一个叫password。你可能想到的是反射,通过map的key来查找User类的Field!这么做是没有问题的,但我们要知道类的成员变量是私有的,虽然也可以通过反射去访问类的私有的成员变量,但我们也要清楚反射访问私有的东西是有“危险”的,所以还是建议通过getUsername和setUsername来访问JavaBean属性。
Map<String,String> map = new HashMap<String,String>(); map.put("username", "admin"); map.put("password", "admin123");
BeanInfo beanInfo = Introspector.getBeanInfo(User.class);
PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
User user = new User();
for(PropertyDescriptor pd : pds) {
String name = pd.getName();
String value = map.get(name);
if(value != null) {
Method writeMethod = pd.getWriteMethod();
writeMethod.invoke(user, value);
}
}
System.out.println(user);
2)获取BeanInfo:通过Java.beans.introspector的getInfo()方法获取Java.beans.BeanInfo实例,比如
BeanInfo beaninfo=Introspector.getBeanInfo(User.class);
通过BeanInfo可以得到这个类的所有JavaBean属性的PropertyDescriptor对象,
获取属性描述符:PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();每一个PropertyDescription对象对应 一个JavaBean属性,然后就可以通过PropertyDescription对象来获取这个属性的setting/getting方法了
String getName()获取JavaBean属性名称
Method getWriterMethod() 获取写方法
Method getReadMethod() 获取读方法
参考上面的代码
3)提到内省,不能不提commons-beanutils这个工具。它底层使用了内省,对内省进行了大量的简化!使用beanutils需要的jar包:
commons-beanutils.jar 和 commons-logging.jar;
可以直接设置 username 和 password 的属性值 admin 和 admin123
User user = new User(); BeanUtils.setProperty(user, "username", "admin"); BeanUtils.setProperty(user, "password", "admin123");
也可以获取属性值
User user = new User("admin", "admin123"); String username = BeanUtils.getProperty(user, "username"); String password = BeanUtils.getProperty(user, "password"); System.out.println("username=" + username + ", password=" + password);
还可以封装Map数据到JavaBean对象中
Map<String,String> map = new HashMap<String,String>(); map.put("username", "admin"); map.put("password", "admin123"); User user = new User(); BeanUtils.populate(user, map); System.out.println(user);
内容总结
以上是互联网集市为您收集整理的JavaBean全部内容,希望文章能够帮你解决JavaBean所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。