Effective Java 学习笔记 (11)
Clone这个方法很鸡肋,原因是因为它是受保护的(protected),其二Clone这个方法是可选的,即有可能类没有提供这个方法。
clone没有调用构造函数,而且如果父类没有实现clone的话,子类永远也不可能正确实现clone.
总之,clone是个很头痛的函数,如果要正确实现,必须考虑到深考贝的情况,否则被克隆出来的对象就不是独立的,如,要写一个堆栈类的克隆函数,正确的实现方法是:
@Override public Stack clone() {
try {
Stack result = (Stack) super.clone();
result.elements = elements.clone();
return result;
} catch (CloneNotSupportedException e) {
throw new AssertionError();
}
}
要注意对于final字段不能正常工作,clone结构与可变对象的final字段是不兼容的。
对于列散数组,仅仅递归调用的clone方法还不够,看书中正确的做法:
public class HashTable implements Cloneable {
private Entry[] buckets = ...;
private static class Entry {
final Object key;
相关文档:
char在java中称为“字符型” 占2个字节
字符常量是用单引号括起的一个字符 且字符常量在内存中存储的是该字符在Unicode字符集中的排序位置,即整数
eg:char x='a'
内存x中存储的是字符a在Unicode字符集中的排序位置97 因此允许将上面的语句写成char x=97;
由此例可以得出以下结论:
1.要 ......
package com.vista.Server;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.nio.ByteBuffer;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels. ......
1. 当某个类中的某个方法中的局部变量的名字与该类中的全局变量的名字相同时 该全局变量将被隐藏;此时 如果想在该方法中使用全局
变量 必须使用关键字(this.全局变量名)
2. 当this关键字出现在类的实例方法中时,代表正在调用该方法的当前对象
3.  ......
1.InputStream和OutputStream是用于读或写单个字节或者字节数组,我们很少用到它们的方法,它们之所以存在是因为别的类可以使用它们,以便提供更有用的接口。因此,我们很少使用单一的类来创建流对象,而是通过叠合多个对象来提供所期望的功能。
2.FilterInputStream和FilterOutputStream是用来提供装饰器类接口以控制特定 ......