Skip to content

Commit d24c560

Browse files
committed
调整“JavaBean 到底是什么”文章位置
1 parent 0913c53 commit d24c560

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed
+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
## JavaBean 到底是什么?
2+
3+
### 问题
4+
5+
按照我的理解: “Bean” 是一个带有属性和getters/setter方法的Java类。它是不是和C的结构体是相似的呢,对吗?
6+
一个“Bean"类与普通的类相比是不是语法的不同呢?还是有特殊的定义和接口?
7+
为什么会出现这个术语呢,这让我很困惑?
8+
如果你很好心告诉我一些关于`Serializable`接口的信息,对于你的答案那到底是什么意思,我会非常感谢你的。
9+
10+
### 回答
11+
12+
JavaBean 只是一个[标准](http://www.oracle.com/technetwork/java/javase/documentation/spec-136004.html)
13+
14+
1. 所有的属性是私有的(通过[getters/setters](https://en.wikipedia.org/wiki/Mutator_method)处理属性)
15+
2. 一个公有的无参数的构造器
16+
3. 实现了[序列化(Serializable)](http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html)
17+
18+
就这些,它只是一个规范。但是很多的类库都是依赖于这些预定。
19+
20+
对于`Serializable`,看一下[API文档的解释](http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html)
21+
22+
```
23+
实现java.io.Serializable接口的类能串行化。
24+
不实现此接口的类不会有任何状态的序列化和反序列化。
25+
可序列化类的所有子类型本身都是可序列化。
26+
序列化接口没有方法或字段,仅用于标识的可序列化的语义。
27+
```
28+
换句话说,序列化的对象可以被写入流,文件,对象数据库等。
29+
30+
另外,一个JavaBean类和一个普通的类没有语法区别,如果遵循上面的标准的话,一个类可以认为成JavaBean类。
31+
32+
之所以需要JavaBean,是因为这样预定义了一种类的格式,一些库能依据这个约定的格式,来做一些自动化处理。举个例子,如果一个类库需要通过流来处理你传递的任何对象,它知道它可以正常处理,因为这个对象是可序列化的。(假设这个类库要求你的对象是JavaBeans)
33+
34+
**stackoverflow链接**
35+
http://stackoverflow.com/questions/3295496/what-is-a-javabean-exactly
36+
37+
### 关于序列化相关博客
38+
39+
40+
1. [我对Java Serializable(序列化)的理解和总结](http://xiebh.iteye.com/blog/121311)
41+
2. [理解Java对象序列化](http://www.blogjava.net/jiangshachina/archive/2012/02/13/369898.html)

0 commit comments

Comments
 (0)