什么时候JAVAbean

简单的例子:

河边邂逅

笨笨一天网上观看Data Binding的这场show的时候,发现POJO 和Javabean 这两位美丽的菇凉。他早就听说Java bean 这位倩倩少女,就是不怎么了解。
于是,帅气可爱的笨笨在河边散步。忽然,隐隐约约感觉岸边大树后面,有人偷窥他。一开始,有点害怕。以为是坏人,后来用他大眼睛的余光瞄了几眼,原来是个小姑娘,哈哈······

相互了解

这下,笨笨灵机一动,来了个反捉迷藏,巧妙把Java bean 少女 约了出来。

  • 原来你就是Java bean 啊,果然漂亮。
  • 对,我是Java bean。
  • 那你是Java家族中一个普通的类吧?
  • 才不是的呢,我是一个很有用的类,更确切的说,我更像是一个规范。
  • java bean,那你到底是什么规范?
  • 首先, 我这个类是public的,还要有一个无参数的构造函数。第二,我的属性是private的,必须通过get 和set 方法进行访问。第三,我还支持“事件”,例如addXXXXListener(XXXEvent e),我可以处理各种事件,比如鼠标点击,键盘响应等等。第四,我还提供一个反射机制。第五,我还是可以序列化/反序列化的,这样,我就可以被方便的存储,转移了。


作者:小风筝
链接:https://www.zhihu.com/question/19773379/answer/125018370
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

作者:杨博
链接:https://www.zhihu.com/question/19773379/answer/31625054
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Java语言欠缺属性、事件、多重继承功能。所以,如果要在Java程序中实现一些面向对象编程的常见需求,只能手写大量胶水代码。Java Bean正是编写这套胶水代码的惯用模式或约定。这些约定包括getXxx、setXxx、isXxx、addXxxListener、XxxEvent等。遵守上述约定的类可以用于若干工具或库。

举个例子,假如有人要用Java实现一个单向链表类,可能会这样写:
// 编译成 java-int-list_1.0.jar
public final class JavaIntList {
  static class Node {
    public Node next;
    public int value;
  }
  public Node head;
  public int size;
}
上述实现为了能够快速获取链表的大小,把链表大小缓存在size变量中。用法如下:
JavaIntList myList = new JavaIntList();
System.out.println(myList.size);
JavaIntList的作者很满意,于是开源了java-int-list库的1.0版。文件名是java-int-list_1.0.jar。发布后,吸引了许多用户来使用java-int-list_1.0.jar。
有一天,作者决定要节省内存,不要缓存size变量了,把代码改成这样:
// 编译成 java-int-list_2.0.jar
public final class JavaIntList {
  static final class Node {
    public Node next;
    public int value;
  }
  public Node head;
  public int getSize() {
    Node n = head;
    int i = 0;
    while (n != null) {
      n = n.next;
      i++;
    }
    return i;
  }
}

然后发布了2.0版:java-int-list_2.0.jar。发布后,原有java-int-list_1.0.jar的用户纷纷升级版本到2.0。这些用户一升级,就发现自己的程序全部坏掉了,说是找不到什么size变量。于是这些用户就把作者暴打一顿,再也不敢用java-int-list库了。

这个故事告诉我们,如果不想被暴打致死,你就必须保持向后兼容性。太阳公司在设计Java语言时,也懂得这个道理。所以Java标准库中,绝对不会出现public int size这样的代码,而一定会一开始就写成:
private int size;
public int getSize() { return size; }

让用户一开始就使用getSize,以便有朝一日修改getSize实现时,不破坏向后兼容性。这种public int getSize() { return size; }的惯用手法,就是Java Bean。

现在是2014年,C#、Scala等比Java新的面向对象语言自身就提供了语言特性来实现这些常用需求,所以根本不需要Java Bean这样繁琐的约定。


作者:cinor
链接:https://www.zhihu.com/question/19773379/answer/192059521
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

对Java Bean的初步理解:

Java Bean 就是Java里一种可以复用的类,经过系统编译后生成一个.class的文件。

将一个具体的实例进行抽象化得到的属性,根据JAVA API规定书写出来的类,其中包含get()和set()两种方法。

例如一个人一定会有名字这一个属性,那我们就把这个属性包装到一个类里,只要程序里调用到人,我们就可以通过这个类设置和得到这个人的姓名。

public class person{
	
	private String name;
	
	public String getName(){
		return this.name;
	}
	
	public String setName(String Name){
		return this.name = name;
	}
	
}

怎样调用Java Bean?

工作当中一般接触的是传统的调用方式。

后台service调用方法:

public String main(){
	//实例初始化
	person man = new person();
	//姓名
	man.setName("ABC");
        //返回值
	return man.getName();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值