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

  1. /*
  2.  * @(#)Class.java    1.14 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.  * Class objects contain runtime representations of classes.  Every
  24.  * object in the system is an instance of some class, and for each class
  25.  * there is one of these descriptor objects. A class descriptor is not 
  26.  * modifiable at runtime.<p>
  27.  * The following example uses a Class object to print the class name
  28.  * of an object:
  29.  * <pre>
  30.  *    void printClassName(Object obj) {
  31.  *        System.out.println("The class of " + obj +
  32.  *                   " is " + obj.getClass().getName());
  33.  *    }
  34.  * </pre>
  35.  * @version     1.14, 31 Jan 1995
  36.  */
  37. public final
  38. class Class {
  39.     /**
  40.      * Make sure nobody instantiates this class
  41.      */
  42.     private Class() {}
  43.     
  44.     /**
  45.      * Returns the runtime class descriptor for the specified class.
  46.      * For example the following code fragment returns the runtime
  47.      * class descriptor for the class named java.lang.Thread:
  48.      * <pre>
  49.      *        Class t = Class.forName("java.lang.Thread")
  50.      * </pre>
  51.      * @param className    the fully qualified name of the desired class
  52.      * @return         the class
  53.      * @exception    NoClassDefFoundException the class could not be found
  54.      */
  55.     public static native Class forName(String className);
  56.  
  57.     /**
  58.      * Creates an new instance of this class.
  59.      * @return         the new instance
  60.      * @exception    IncompatibleTypeException you can't instanciate interfaces
  61.      * @exception    OutOfMemoryException out of memory
  62.      */
  63.     public native Object newInstance();
  64.  
  65.     /**
  66.      * Returns the name of this class.
  67.      */
  68.     public native String getName();
  69.  
  70.     /**
  71.      * Returns the superclass of this class.
  72.      */
  73.     public native Class getSuperclass();
  74.  
  75.     /**
  76.      * Returns the interfaces of this class.
  77.      * @return        the interfaces of this class, an array of length
  78.      *            0 is returned if the class implements no interfaces.
  79.      */
  80.     public native Class getInterfaces()[];
  81.  
  82.     /**
  83.      * Returns the class loader of this class.
  84.      * @return    the class loader of this class, null is returned
  85.      *        if the class has no class loader.
  86.      * @see    ClassLoader
  87.      */
  88.     public native ClassLoader getClassLoader();
  89.  
  90.     /**
  91.      * Returns true if this class is an interface, false otherwise.
  92.      * @return    a boolean indicating whether this class is an interface
  93.      */
  94.     public native boolean isInterface();
  95.  
  96.     /**
  97.      * Returns the name of this class or this interface. The word 
  98.      * "class" is prepended if it is a class; the word "interface is
  99.      * is prepended if it is an interface.
  100.      * @return    a string representing this class or interface
  101.      */
  102.     public String toString() {
  103.     return (isInterface() ? "interface " : "class ") + getName();
  104.     }
  105. }
  106.  
  107.