// Object.java - The root of all evil. /* Copyright (C) 1998, 1999 Red Hat, Inc. This file is part of libgcj. This software is copyrighted work licensed under the terms of the Libgcj License. Please consult the file "LIBGCJ_LICENSE" for details. */ package java.lang; /** * @author Tom Tromey * @date September 30, 1998 */ /* Written using "Java Class Libraries", 2nd edition, ISBN 0-201-31002-3 * "The Java Language Specification", ISBN 0-201-63451-1 * plus online API docs for JDK 1.2 beta from http://www.javasoft.com. * plus gcj compiler sources (to determine object layout) * Status: Complete to version 1.1 */ public class Object { // This must come first. See _JvObjectPrefix in Object.h. protected void finalize () throws Throwable { } public final native Class getClass (); public native int hashCode (); public final native void notify (); public final native void notifyAll (); public final native void wait (long timeout, int nanos) throws InterruptedException; public boolean equals (Object obj) { return this == obj; } public Object () { } public String toString () { return getClass().getName() + '@' + Integer.toHexString(hashCode()); } public final void wait () throws InterruptedException { wait (0, 0); } public final void wait (long timeout) throws InterruptedException { wait (timeout, 0); } protected native Object clone () throws CloneNotSupportedException; // This initializes the sync_info member. It is here for // completeness (some day we'll be able to auto-generate Object.h). private final native void sync_init (); // This exists as a workaround for the fact that we can't catch a // Java Exception from C++. This is from section 12.6 of the Java // Language Spec. FIXME: remove this once exception processing // works. private static final void hack12_6 (Object f) { try { f.finalize(); } catch (Throwable x) { } } // Note that we don't mention the sync_info field here. If we do, // jc1 will not work correctly. }