易截截图软件、单文件、免安装、纯绿色、仅160KB

Effective Java 学习笔记(15)

一个不可改变(immutable)的类,顾名思义,就是其实例不能改变,即里面所有的信息在创建时就赋值,在其生命周期中其值不变。
使用不可改变的类的优点在于,设计简单,易于实现和使用,具体来讲,它的状态机很简单,只有一个状态。它是线程安全,能够自由的被共享,能够通过静态工厂模式尽可能复用已经创建出来的对象,也不用为它写clone或是拷贝构造函数,不可改变的类也便于维护,是系统的良性基石。
其唯一的缺点就是,它必须为不同的值分别创造不同的对象。
使一个类为immutable,要做到以下几点。
1.不要提供任何可以修改对象中数据的方法。
2.确保此类不会被继承。这个可以防止子类不小心对父类中的数据进行更改。
3.使所有的字段为final.
4.使所有的字段为private.
5.确保所有字段中的可被改变的对象的引用不被外界获得。
但要注意的当实现序列化的时候,如果一个不可改变类中包含可改变类的引用,就必须提供一个显式的readObject或readResolve,或使用ObjectOutputStream.writeUnshared和OjbectInputStream.readUnshared方法。否则就攻击者就可能创建一个可以改变的实例。
总结:除非有足够的理由,应该将类设计为immutable。
         如果一个类不能设计成immutable,那么尽量减少可改变的字段。


相关文档:

Java Web 第三天 Servlet处理响应

一、
HTTP
响应的格式
响应行:
HTTP
版本、响应码、响应描述
响应头
空行
消息体
HTTP
默认的文本编码为:
ISO-8895-1
二、
响应码的设置
1.      

什么是响应码
响应码位于
HTTP
响应的响应行中,他用来描述当前
Servlet
的一些重要信息。常见的响应码有
200.302 ......

Java Web 第四天 使用Servlet处理请求

一、
GET

POST
的区别
1.GET
提交的是文本内容,规定其数据长度不超过
255
个字符。在
GET
方式提交的
URL
中会显示出提交的查询数据而却提交数据的缓存会在浏览器的
URL
历史状态中,这样我们往往在浏览网页的时候点击后退键不需要重新发送请求。
2.POST
提交的可以使文本内容,也可以使二进制内容,所 ......

假期没事,写了个90行的俄罗斯方块,Java实现

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Terris extends JFrame implements Runnable, KeyListener {
private short isPlaying=0,xOffSet = 2, yOffSet = 0, blockType = (short) Math.round(Math.random() * 6), blockRotation = 0, blockColor = (short) Math.round(Math. ......

Java判断OS是linux还是windows

public class Test {
public static void main(String aa[]) {
if (System.getProperty("os.name").equals("Linux")) {
System.out.println("linux");
} else if (System.getProperty("os.name").equals("Windows XP")) {
System.out.println("win ......

java中hashmap和hashtable的区别

 
1、  继承和实现区别
Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。
2、  线程安全不同
HashTable的方法是同步的,HashMap是未同步,所以在多线程场合要手动同步HashMap。
3、  对null的处理不同
HashTable不允许null值(key和value都不可以),HashMap允许n ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号