home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1995 November / PCWK1195.iso / inne / win95 / sieciowe / hotja32.lzh / hotjava / classsrc / java / lang / object.java < prev    next >
Text File  |  1995-08-11  |  6KB  |  153 lines

  1. /*
  2.  * @(#)Object.java    1.15 95/01/31  
  3.  *
  4.  * Copyright (c) 1994 Sun Microsystems, Inc. All Rights Reserved.
  5.  *
  6.  * Permission to use, copy, modify, and distribute this software
  7.  * and its documentation for NON-COMMERCIAL purposes and without
  8.  * fee is hereby granted provided that this copyright notice
  9.  * appears in all copies. Please refer to the file "copyright.html"
  10.  * for further important copyright and licensing information.
  11.  *
  12.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
  13.  * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
  14.  * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
  15.  * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
  16.  * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
  17.  * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
  18.  */
  19.  
  20. package java.lang;
  21.  
  22. /**
  23.  * The root of the class hierarchy.  Every class in the system
  24.  * has Object as its ultimate parent.  Every field and method
  25.  * defined here is available in every object. 
  26.  * @see        Class
  27.  * @version     1.15, 31 Jan 1995
  28.  */
  29. public class Object {
  30.     /**
  31.      * Returns the Class of this Object. Java has a runtime
  32.      * representation for classes, a descriptor (a Class object),
  33.      * which getClass returns for any object.
  34.      * @return        the class of this object
  35.      */
  36.     public final native Class getClass();
  37.  
  38.     /**
  39.      * Returns a hashcode for this object.
  40.      * Each object in the java system has a hashcode. The hashcode
  41.      * is a number that is usually different for different objects.
  42.      * It is used when storing objects in hashtables.
  43.      * Note: hashcodes can be negative as well as positive.
  44.      * @return        the hashcode for this object.
  45.      * @see        java.util.Hashtable
  46.      */
  47.     public native int hashCode();
  48.  
  49.     /**
  50.      * Compares two objects for equality.
  51.      * Returns a boolean that indicates whether this object is equivalent 
  52.      * to another object. This method is used when an object is stored
  53.      * in a hashtable.
  54.      * @param    obj    the object to compare with
  55.      * @return        returns true if the this object is equal to obj
  56.      * @see        java.util.Hashtable
  57.      */
  58.     public boolean equals(Object obj) {
  59.     return (this == obj);
  60.     }
  61.  
  62.     /**
  63.      * Copies the contents of an object into this object.  The contents
  64.      * of an object are defined as the values of its instance variables.
  65.      * src must be of the same class as this object.
  66.      * @param src        the object which is copied into the current object
  67.      * @exception    ClassCastException obj is not of the same type as
  68.      *            this object.
  69.      * @see        Object#clone
  70.      */
  71.     protected native void copy(Object src);
  72.  
  73.     /**
  74.      * Creates a clone of this object. A new instance is allocated and
  75.      * the copy(Object) method is called to copy the contents of this
  76.      * object into the clone.
  77.      * @return        a copy of this object
  78.      * @exception    OutOfMemoryException Not enough memory
  79.      * @see        Object#copy
  80.      */
  81.     protected native Object clone();
  82.  
  83.     /**
  84.      * Returns a string that represents the value of this object.
  85.      * @return    a printable string that represents the value of this object
  86.      */
  87.     public native String toString();
  88.  
  89.     /**
  90.      * Notifies a single waiting thread. Threads that are waiting are
  91.      * generally waiting for another thread to change some condition.
  92.      * Thus, the thread effecting the change notifies the waiting thread
  93.      * using notify(). Threads that want to wait for a condition to 
  94.      * change before proceeding can call wait(). <p>
  95.      * <em>notify() can only be called from within a synchronized method.</em>
  96.      * @exception    InternalException Current thread is not the owner of the
  97.      *            object's monitor.
  98.      * @see        Object#wait
  99.      * @see        Object#notifyall
  100.      */
  101.     public native void notify();
  102.  
  103.     /**
  104.      * Notifies all of the threads waiting for a condition to change.
  105.      * Threads that are waiting are generally waiting for another thread to 
  106.      * change some condition. Thus, the thread effecting a change that more 
  107.      * than one thread is waiting for notifies all the waiting threads using
  108.      * notifyall(). Threads that want to wait for a condition to 
  109.      * change before proceeding can call wait(). <p>
  110.      * <em>notifyall() can only be called from within a synchronized method.</em>
  111.      * @exception    InternalException Current thread is not the owner of the
  112.      *            object's monitor.
  113.      * @see        Object#wait
  114.      * @see        Object#notify
  115.       */
  116.     public native void notifyAll();
  117.  
  118.     /**
  119.      * Causes a thread to wait until it is notified or the specified timeout
  120.      * expires. <p>
  121.      * <em>wait() can only be called from within a synchronized method.</em>
  122.      * @param timeout    the maximum time to wait in milliseconds
  123.      * @exception    InternalException Current thread is not the owner of the
  124.      *            object's monitor.
  125.      */
  126.     public native void wait(int timeout);
  127.  
  128.     /**
  129.      * Causes a thread to wait until it is notified. <p>
  130.      * <em>wait() can only be called from within a synchronized method</em>
  131.      * @exception    InternalException Current thread is not the owner of the
  132.      *            object's monitor.
  133.      */
  134.     public void wait() {
  135.     wait(0);
  136.     }
  137.  
  138.     /**
  139.      * Locks the object. <em>Don't use this!</em> This was needed in the old compiler
  140.      * to implement the synchronize statement.
  141.      */
  142.     public native void enterMonitor();
  143.  
  144.     /**
  145.      * Unlock the object. <em>Don't use this!</em> This was needed in the old compiler
  146.      * to implement the synchronize statement.
  147.      */
  148.     public native void exitMonitor();
  149. }
  150.  
  151.  
  152.  
  153.