Obejct源代码学习
常用方法:
//该类有static,为静态方法,同时有native修饰
private static native void registerNatives();
//获取类,此方法可以获取类的完整名称
public final native Class<?> getClass();
//获取对象的hashCode值,一般在new Object() 后产生一个新得int 类型参数作为hashcode
public native int hashCode();
//比较熟悉的,比较两个对象的地址。
public boolean equals(Object paramObject)
{
return this == paramObject;
}
//clone方法,此处抛出错误。一般情况下用于新建一个对讲复制另一个对象的参数,并且不对另一个对象产生影响。
//参考ctrL+C,ctrl+V
protected native Object clone()
throws CloneNotSupportedException;
//将对象转换为String类型
public String toString()
{
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
//线程
public final native void notify();
public final native void notifyAll();
//线程等待方法
/**
该方法会导致当前线程等待,直到另一个线程调用notify()或者notifyAll()方法或者是设定的等待时间过去。
当前线程必须拥有此对象监视器。如果线程等待,有以下四种方式可以解除等待。
第一种方式:其他线程调用notify()方法,然后该线程刚好被唤醒。
第二种方式:其他线程中断。
第三种方式:其他线程调用notifyAll()方法。
第四种方式:超时时间为0。
一旦发生上面四件事情,就会把该线程从等待设置中删除。
/public final native void wait(long paramLong)
throws InterruptedException;
public final void wait(long paramLong, int paramInt)
throws InterruptedException
{
if (paramLong < 0L) {
throw new IllegalArgumentException("timeout value is negative");
}
if ((paramInt < 0) || (paramInt > 999999)) {
throw new IllegalArgumentException("nanosecond timeout value out of range");
}
if ((paramInt >= 500000) || ((paramInt != 0) && (paramLong == 0L))) {
paramLong += 1L;
}
wait(paramLong);
}
public final void wait()
throws InterruptedException
{
wait(0L);
}
/**
原理:一旦垃圾收集器准备好释放对象占用的存储空间,它首先调用finalize(),而且只有在下一次垃圾收集过程中,才会真正回收对象的内存。所以如果使用finalize(),就可以在垃圾收集期间进行一些重要的清除或清扫工作(如关闭流等操作)
*/
protected void finalize()
throws Throwable
{
}
/**
静态全局变量或者代码块
*/
static
{
registerNatives();
}