diff options
| author | John Keiser <shalom@gnu.org> | 1998-11-08 06:22:55 +0000 |
|---|---|---|
| committer | John Keiser <shalom@gnu.org> | 1998-11-08 06:22:55 +0000 |
| commit | 7dc794e063dd86355d9b400088cb2ada134221e4 (patch) | |
| tree | ef8031c8448be63b951f3a472b2caeaf8d649ec7 /vm/reference/java/lang/Class.java | |
| parent | 0727c73f0927e826d86a659f217d78de3da70df3 (diff) | |
| download | classpath-7dc794e063dd86355d9b400088cb2ada134221e4.tar.gz | |
Removed private_data fields.
Diffstat (limited to 'vm/reference/java/lang/Class.java')
| -rwxr-xr-x | vm/reference/java/lang/Class.java | 841 |
1 files changed, 420 insertions, 421 deletions
diff --git a/vm/reference/java/lang/Class.java b/vm/reference/java/lang/Class.java index 493d39993..5396fcde1 100755 --- a/vm/reference/java/lang/Class.java +++ b/vm/reference/java/lang/Class.java @@ -1,422 +1,421 @@ -/*
- * java.lang.Class: part of the Java Class Libraries project.
- * Copyright (C) 1998 John Keiser
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-package java.lang;
-
-import java.lang.reflect.*;
-import gnu.java.lang.*;
-
-/**
- ** A Class represents a Java type. There will never be
- ** multiple Class objects with identical names and
- ** ClassLoaders.<P>
- **
- ** Arrays with identical type and number of dimensions
- ** share the same class (and null "system" ClassLoader,
- ** incidentally). The name of an array class is
- ** <CODE>[<type name></CODE> ... for example,
- ** String[]'s class is <CODE>[java.lang.String</CODE>.
- ** boolean, byte, short, char, int, long, float and double
- ** have the "type name" of Z,B,S,C,I,J,F,D for the
- ** purposes of array classes. If it's a multidimensioned
- ** array, the same principle applies:
- ** <CODE>int[][][]</CODE> == <CODE>[[[I</CODE>.<P>
- **
- ** As of 1.1, this class represents primitive types as
- ** well. You can get to those by looking at
- ** java.lang.Integer.TYPE, java.lang.Boolean.TYPE, etc.
- **
- ** @author John Keiser
- ** @version 1.1.0, Aug 6 1998
- ** @since JDK1.0
- **/
-
-public class Class {
- int private_data;
- Class superclass = null;
- String name = null;
- Object[] signers = null;
-
- /** Return the human-readable form of this Object. For
- ** class, that means "interface " or "class " plus the
- ** classname.
- ** @return the human-readable form of this Object.
- ** @since JDK1.0
- **/
- public String toString() {
- return (isInterface() ? "interface " : "class ") + getName();
- }
-
- /** Get the name of this class, separated by dots for
- ** package separators.
- ** @return the name of this class.
- ** @since JDK1.0
- **/
- public String getName() {
- if(name != null)
- return name;
- else
- return nativeGetName();
- }
-
- /** Get whether this class is an interface or not. Array
- ** types are not interfaces.
- ** @return whether this class is an interface or not.
- ** @since JDK1.0
- **/
- public native boolean isInterface();
-
- /** Get the direct superclass of this class. If this is
- ** an interface, it will get the direct superinterface.
- ** @return the direct superclass of this class.
- ** @since JDK1.0
- **/
- public Class getSuperclass() {
- if(superclass != null)
- return superclass;
- else
- return nativeGetSuperclass();
- }
-
- /** Get the interfaces this class <EM>directly</EM>
- ** implements, in the order that they were declared.
- ** This method may return an empty array, but will
- ** never return null.
- ** @return the interfaces this class directly implements.
- ** @since JDK1.0
- **/
- public native Class[] getInterfaces();
-
- /** Get a new instance of this class by calling the
- ** no-argument constructor.
- ** @return a new instance of this class.
- ** @exception InstantiationException if there is not a
- ** no-arg constructor for this class, or if
- ** an exception occurred during instantiation,
- ** or if the target constructor throws an
- ** exception.
- ** @exception IllegalAccessException if you are not
- ** allowed to access the no-arg constructor of
- ** this Class for whatever reason.
- ** @since JDK1.0
- **/
- public Object newInstance() throws InstantiationException, IllegalAccessException {
- try {
- return getConstructor(new Class[0]).newInstance(new Object[0]);
- } catch(SecurityException e) {
- throw new IllegalAccessException("Cannot access no-arg constructor");
- } catch(IllegalArgumentException e) {
- throw new UnknownError("IllegalArgumentException thrown from Constructor.newInstance(). Something is rotten in Denmark.");
- } catch(InvocationTargetException e) {
- throw new InstantiationException("Target threw an exception.");
- } catch(NoSuchMethodException e) {
- throw new InstantiationException("Method not found");
- }
- }
-
- /** Get the ClassLoader that loaded this class. If it was
- ** loaded by the system classloader, this method will
- ** return null.
- ** @return the ClassLoader that loaded this class.
- ** @since JDK1.0
- **/
- public native ClassLoader getClassLoader();
-
- /** Use the system classloader to load and link a class.
- ** @param name the name of the class to find.
- ** @return the Class object representing the class.
- ** @exception ClassNotFoundException if the class was not
- ** found by the system classloader.
- ** @since JDK1.0
- **/
- public static native Class forName(String name) throws ClassNotFoundException;
-
- /** Discover whether an Object is an instance of this
- ** Class. Think of it as almost like
- ** <CODE>o instanceof (this class)</CODE>.
- ** @param o the Object to check
- ** @return whether o is an instance of this class.
- ** @since JDK1.1
- **/
- public native boolean isInstance(Object o);
-
- /** Discover whether an instance of the Class parameter
- ** would be an instance of this Class as well. Think of
- ** doing <CODE>isInstance(c.newInstance())</CODE> or even
- ** <CODE>c instanceof (this class)</CODE>.
- ** @param c the class to check
- ** @return whether an instance of c would be an instance
- ** of this class as well.
- ** @since JDK1.1
- **/
- public native boolean isAssignableFrom(Class c);
-
- /** Return whether this class is an array type.
- ** @return whether this class is an array type.
- ** @since JDK1.1
- **/
- public boolean isArray() {
- return getName().charAt(0) == '[';
- }
-
- /** Return whether this class is a primitive type. A
- ** primitive type class is a class representing a kind of
- ** "placeholder" for the various primitive types. You
- ** can access the various primitive type classes through
- ** java.lang.Boolean.TYPE, java.lang.Integer.TYPE, etc.
- ** @return whether this class is a primitive type.
- ** @since JDK1.1
- **/
- public native boolean isPrimitive();
-
- /** If this is an array, get the Class representing the
- ** type of array. Examples: [[java.lang.String would
- ** return [java.lang.String, and calling getComponentType
- ** on that would give java.lang.String. If this is not
- ** an array, returns null.
- ** @return the array type of this class, or null.
- ** @since JDK1.1
- **/
- public Class getComponentType() {
- if(isArray()) {
- try {
- return Class.forName(name.substring(1));
- } catch(ClassNotFoundException e) {
- return null;
- }
- } else {
- return null;
- }
- }
-
- /** Get the signers of this class.
- ** @return the signers of this class.
- ** @since JDK1.1
- **/
- public Object[] getSigners() {
- return signers;
- }
-
- /** Set the signers of this class.
- ** @param signers the signers of this class.
- ** @since JDK1.1
- **/
- public void setSigners(Object[] signers) {
- this.signers = signers;
- }
-
- /** Get a resource URL using this class's package using
- ** the getClassLoader().getResource() method. If this
- ** class was loaded using the system classloader,
- ** ClassLoader.getSystemResource() is used instead.<P>
- **
- ** If the name you supply is absolute (it starts with a
- ** <CODE>/</CODE>), then it is passed on to getResource()
- ** as is. If it is relative, the package name is
- ** prepended, with <CODE>.</CODE>'s replaced with
- ** <CODE>/</CODE> slashes.<P>
- **
- ** The URL returned is system- and classloader-
- ** dependent, and could change across implementations.
- ** @param name the name of the resource, generally a
- ** path.
- ** @return the URL to the resource.
- **/
- public java.net.URL getResource(String name) {
- if(name.length() > 0 && name.charAt(0) != '/') {
- name = ClassHelper.getPackagePortion(getName()).replace('.','/') + "/" + name;
- }
- ClassLoader c = getClassLoader();
- if(c == null) {
- return ClassLoader.getSystemResource(name);
- } else {
- return c.getResource(name);
- }
- }
-
- /** Get a resource using this class's package using the
- ** getClassLoader().getResource() method. If this class
- ** was loaded using the system classloader,
- ** ClassLoader.getSystemResource() is used instead.<P>
- **
- ** If the name you supply is absolute (it starts with a
- ** <CODE>/</CODE>), then it is passed on to getResource()
- ** as is. If it is relative, the package name is
- ** prepended, with <CODE>.</CODE>'s replaced with
- ** <CODE>/</CODE> slashes.<P>
- **
- ** The URL returned is system- and classloader-
- ** dependent, and could change across implementations.
- ** @param name the name of the resource, generally a
- ** path.
- ** @return An InputStream with the contents of the
- ** resource in it.
- **/
- public java.io.InputStream getResourceAsStream(String name) {
- if(name.length() > 0 && name.charAt(0) != '/') {
- name = ClassHelper.getPackagePortion(getName()).replace('.','/') + "/" + name;
- }
- ClassLoader c = getClassLoader();
- if(c == null) {
- return ClassLoader.getSystemResourceAsStream(name);
- } else {
- return c.getResourceAsStream(name);
- }
- }
-
- /** Get the modifiers of this class. These can be checked
- ** against using java.lang.reflect.Modifier.
- ** @return the modifiers of this class.
- ** @see java.lang.reflect.Modifer
- ** @since JDK1.1
- **/
- public native int getModifiers();
-
- /** If this is an inner class, return the class that
- ** declared it. If not, return null.
- ** @return the declaring class of this class.
- ** @since JDK1.1
- **/
- public native Class getDeclaringClass();
-
- /** Get all the public inner classes, declared in this
- ** class or inherited from superclasses, that are
- ** members of this class.
- ** @return all public inner classes in this class.
- **/
- public native Class[] getClasses();
-
- /** Get all the inner classes declared in this class.
- ** @return all inner classes declared in this class.
- ** @exception SecurityException if you do not have access
- ** to non-public inner classes of this class.
- **/
- public native Class[] getDeclaredClasses() throws SecurityException;
-
- /** Get a public constructor from this class.
- ** @param args the argument types for the constructor.
- ** @return the constructor.
- ** @exception NoSuchMethodException if the constructor does
- ** not exist.
- ** @exception SecurityException if you do not have access to public
- ** members of this class.
- **/
- public native Constructor getConstructor(Class[] args) throws NoSuchMethodException, SecurityException;
-
- /** Get a constructor declared in this class.
- ** @param args the argument types for the constructor.
- ** @return the constructor.
- ** @exception NoSuchMethodException if the constructor does
- ** not exist in this class.
- ** @exception SecurityException if you do not have access to
- ** non-public members of this class.
- **/
- public native Constructor getDeclaredConstructor(Class[] args) throws NoSuchMethodException, SecurityException;
-
- /** Get all public constructors from this class.
- ** @return all public constructors in this class.
- ** @exception SecurityException if you do not have access to public
- ** members of this class.
- **/
- public native Constructor[] getConstructors() throws SecurityException;
-
- /** Get all constructors declared in this class.
- ** @return all constructors declared in this class.
- ** @exception SecurityException if you do not have access to
- ** non-public members of this class.
- **/
- public native Constructor[] getDeclaredConstructors() throws SecurityException;
-
-
- /** Get a public method from this class.
- ** @param name the name of the method.
- ** @param args the argument types for the method.
- ** @return the method.
- ** @exception NoSuchMethodException if the method does
- ** not exist.
- ** @exception SecurityException if you do not have access to public
- ** members of this class.
- **/
- public native Method getMethod(String name, Class[] args) throws NoSuchMethodException, SecurityException;
-
- /** Get a method declared in this class.
- ** @param name the name of the method.
- ** @param args the argument types for the method.
- ** @return the method.
- ** @exception NoSuchMethodException if the method does
- ** not exist in this class.
- ** @exception SecurityException if you do not have access to
- ** non-public members of this class.
- **/
- public native Method getDeclaredMethod(String name, Class[] args) throws NoSuchMethodException, SecurityException;
-
- /** Get all public methods from this class.
- ** @return all public methods in this class.
- ** @exception SecurityException if you do not have access to public
- ** members of this class.
- **/
- public native Method[] getMethods() throws SecurityException;
-
- /** Get all methods declared in this class.
- ** @return all methods declared in this class.
- ** @exception SecurityException if you do not have access to
- ** non-public members of this class.
- **/
- public native Method[] getDeclaredMethods() throws SecurityException;
-
-
- /** Get a public field from this class.
- ** @param name the name of the field.
- ** @return the field.
- ** @exception NoSuchFieldException if the field does
- ** not exist.
- ** @exception SecurityException if you do not have access to public
- ** members of this class.
- **/
- public native Field getField(String name) throws NoSuchFieldException, SecurityException;
-
- /** Get a field declared in this class.
- ** @param name the name of the field.
- ** @return the field.
- ** @exception NoSuchFieldException if the field does
- ** not exist in this class.
- ** @exception SecurityException if you do not have access to
- ** non-public members of this class.
- **/
- public native Field getDeclaredField(String name) throws NoSuchFieldException, SecurityException;
-
- /** Get all public fields from this class.
- ** @return all public fields in this class.
- ** @exception SecurityException if you do not have access to public
- ** members of this class.
- **/
- public native Field[] getFields() throws SecurityException;
-
- /** Get all fields declared in this class.
- ** @return all fieilds declared in this class.
- ** @exception SecurityException if you do not have access to
- ** non-public members of this class.
- **/
- public native Field[] getDeclaredFields() throws SecurityException;
-
- private native String nativeGetName();
- private native Class nativeGetSuperclass();
-}
+/* + * java.lang.Class: part of the Java Class Libraries project. + * Copyright (C) 1998 John Keiser + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +package java.lang; + +import java.lang.reflect.*; +import gnu.java.lang.*; + +/** + ** A Class represents a Java type. There will never be + ** multiple Class objects with identical names and + ** ClassLoaders.<P> + ** + ** Arrays with identical type and number of dimensions + ** share the same class (and null "system" ClassLoader, + ** incidentally). The name of an array class is + ** <CODE>[<type name></CODE> ... for example, + ** String[]'s class is <CODE>[java.lang.String</CODE>. + ** boolean, byte, short, char, int, long, float and double + ** have the "type name" of Z,B,S,C,I,J,F,D for the + ** purposes of array classes. If it's a multidimensioned + ** array, the same principle applies: + ** <CODE>int[][][]</CODE> == <CODE>[[[I</CODE>.<P> + ** + ** As of 1.1, this class represents primitive types as + ** well. You can get to those by looking at + ** java.lang.Integer.TYPE, java.lang.Boolean.TYPE, etc. + ** + ** @author John Keiser + ** @version 1.1.0, Aug 6 1998 + ** @since JDK1.0 + **/ + +public class Class { + Class superclass = null; + String name = null; + Object[] signers = null; + + /** Return the human-readable form of this Object. For + ** class, that means "interface " or "class " plus the + ** classname. + ** @return the human-readable form of this Object. + ** @since JDK1.0 + **/ + public String toString() { + return (isInterface() ? "interface " : "class ") + getName(); + } + + /** Get the name of this class, separated by dots for + ** package separators. + ** @return the name of this class. + ** @since JDK1.0 + **/ + public String getName() { + if(name != null) + return name; + else + return nativeGetName(); + } + + /** Get whether this class is an interface or not. Array + ** types are not interfaces. + ** @return whether this class is an interface or not. + ** @since JDK1.0 + **/ + public native boolean isInterface(); + + /** Get the direct superclass of this class. If this is + ** an interface, it will get the direct superinterface. + ** @return the direct superclass of this class. + ** @since JDK1.0 + **/ + public Class getSuperclass() { + if(superclass != null) + return superclass; + else + return nativeGetSuperclass(); + } + + /** Get the interfaces this class <EM>directly</EM> + ** implements, in the order that they were declared. + ** This method may return an empty array, but will + ** never return null. + ** @return the interfaces this class directly implements. + ** @since JDK1.0 + **/ + public native Class[] getInterfaces(); + + /** Get a new instance of this class by calling the + ** no-argument constructor. + ** @return a new instance of this class. + ** @exception InstantiationException if there is not a + ** no-arg constructor for this class, or if + ** an exception occurred during instantiation, + ** or if the target constructor throws an + ** exception. + ** @exception IllegalAccessException if you are not + ** allowed to access the no-arg constructor of + ** this Class for whatever reason. + ** @since JDK1.0 + **/ + public Object newInstance() throws InstantiationException, IllegalAccessException { + try { + return getConstructor(new Class[0]).newInstance(new Object[0]); + } catch(SecurityException e) { + throw new IllegalAccessException("Cannot access no-arg constructor"); + } catch(IllegalArgumentException e) { + throw new UnknownError("IllegalArgumentException thrown from Constructor.newInstance(). Something is rotten in Denmark."); + } catch(InvocationTargetException e) { + throw new InstantiationException("Target threw an exception."); + } catch(NoSuchMethodException e) { + throw new InstantiationException("Method not found"); + } + } + + /** Get the ClassLoader that loaded this class. If it was + ** loaded by the system classloader, this method will + ** return null. + ** @return the ClassLoader that loaded this class. + ** @since JDK1.0 + **/ + public native ClassLoader getClassLoader(); + + /** Use the system classloader to load and link a class. + ** @param name the name of the class to find. + ** @return the Class object representing the class. + ** @exception ClassNotFoundException if the class was not + ** found by the system classloader. + ** @since JDK1.0 + **/ + public static native Class forName(String name) throws ClassNotFoundException; + + /** Discover whether an Object is an instance of this + ** Class. Think of it as almost like + ** <CODE>o instanceof (this class)</CODE>. + ** @param o the Object to check + ** @return whether o is an instance of this class. + ** @since JDK1.1 + **/ + public native boolean isInstance(Object o); + + /** Discover whether an instance of the Class parameter + ** would be an instance of this Class as well. Think of + ** doing <CODE>isInstance(c.newInstance())</CODE> or even + ** <CODE>c instanceof (this class)</CODE>. + ** @param c the class to check + ** @return whether an instance of c would be an instance + ** of this class as well. + ** @since JDK1.1 + **/ + public native boolean isAssignableFrom(Class c); + + /** Return whether this class is an array type. + ** @return whether this class is an array type. + ** @since JDK1.1 + **/ + public boolean isArray() { + return getName().charAt(0) == '['; + } + + /** Return whether this class is a primitive type. A + ** primitive type class is a class representing a kind of + ** "placeholder" for the various primitive types. You + ** can access the various primitive type classes through + ** java.lang.Boolean.TYPE, java.lang.Integer.TYPE, etc. + ** @return whether this class is a primitive type. + ** @since JDK1.1 + **/ + public native boolean isPrimitive(); + + /** If this is an array, get the Class representing the + ** type of array. Examples: [[java.lang.String would + ** return [java.lang.String, and calling getComponentType + ** on that would give java.lang.String. If this is not + ** an array, returns null. + ** @return the array type of this class, or null. + ** @since JDK1.1 + **/ + public Class getComponentType() { + if(isArray()) { + try { + return Class.forName(name.substring(1)); + } catch(ClassNotFoundException e) { + return null; + } + } else { + return null; + } + } + + /** Get the signers of this class. + ** @return the signers of this class. + ** @since JDK1.1 + **/ + public Object[] getSigners() { + return signers; + } + + /** Set the signers of this class. + ** @param signers the signers of this class. + ** @since JDK1.1 + **/ + public void setSigners(Object[] signers) { + this.signers = signers; + } + + /** Get a resource URL using this class's package using + ** the getClassLoader().getResource() method. If this + ** class was loaded using the system classloader, + ** ClassLoader.getSystemResource() is used instead.<P> + ** + ** If the name you supply is absolute (it starts with a + ** <CODE>/</CODE>), then it is passed on to getResource() + ** as is. If it is relative, the package name is + ** prepended, with <CODE>.</CODE>'s replaced with + ** <CODE>/</CODE> slashes.<P> + ** + ** The URL returned is system- and classloader- + ** dependent, and could change across implementations. + ** @param name the name of the resource, generally a + ** path. + ** @return the URL to the resource. + **/ + public java.net.URL getResource(String name) { + if(name.length() > 0 && name.charAt(0) != '/') { + name = ClassHelper.getPackagePortion(getName()).replace('.','/') + "/" + name; + } + ClassLoader c = getClassLoader(); + if(c == null) { + return ClassLoader.getSystemResource(name); + } else { + return c.getResource(name); + } + } + + /** Get a resource using this class's package using the + ** getClassLoader().getResource() method. If this class + ** was loaded using the system classloader, + ** ClassLoader.getSystemResource() is used instead.<P> + ** + ** If the name you supply is absolute (it starts with a + ** <CODE>/</CODE>), then it is passed on to getResource() + ** as is. If it is relative, the package name is + ** prepended, with <CODE>.</CODE>'s replaced with + ** <CODE>/</CODE> slashes.<P> + ** + ** The URL returned is system- and classloader- + ** dependent, and could change across implementations. + ** @param name the name of the resource, generally a + ** path. + ** @return An InputStream with the contents of the + ** resource in it. + **/ + public java.io.InputStream getResourceAsStream(String name) { + if(name.length() > 0 && name.charAt(0) != '/') { + name = ClassHelper.getPackagePortion(getName()).replace('.','/') + "/" + name; + } + ClassLoader c = getClassLoader(); + if(c == null) { + return ClassLoader.getSystemResourceAsStream(name); + } else { + return c.getResourceAsStream(name); + } + } + + /** Get the modifiers of this class. These can be checked + ** against using java.lang.reflect.Modifier. + ** @return the modifiers of this class. + ** @see java.lang.reflect.Modifer + ** @since JDK1.1 + **/ + public native int getModifiers(); + + /** If this is an inner class, return the class that + ** declared it. If not, return null. + ** @return the declaring class of this class. + ** @since JDK1.1 + **/ + public native Class getDeclaringClass(); + + /** Get all the public inner classes, declared in this + ** class or inherited from superclasses, that are + ** members of this class. + ** @return all public inner classes in this class. + **/ + public native Class[] getClasses(); + + /** Get all the inner classes declared in this class. + ** @return all inner classes declared in this class. + ** @exception SecurityException if you do not have access + ** to non-public inner classes of this class. + **/ + public native Class[] getDeclaredClasses() throws SecurityException; + + /** Get a public constructor from this class. + ** @param args the argument types for the constructor. + ** @return the constructor. + ** @exception NoSuchMethodException if the constructor does + ** not exist. + ** @exception SecurityException if you do not have access to public + ** members of this class. + **/ + public native Constructor getConstructor(Class[] args) throws NoSuchMethodException, SecurityException; + + /** Get a constructor declared in this class. + ** @param args the argument types for the constructor. + ** @return the constructor. + ** @exception NoSuchMethodException if the constructor does + ** not exist in this class. + ** @exception SecurityException if you do not have access to + ** non-public members of this class. + **/ + public native Constructor getDeclaredConstructor(Class[] args) throws NoSuchMethodException, SecurityException; + + /** Get all public constructors from this class. + ** @return all public constructors in this class. + ** @exception SecurityException if you do not have access to public + ** members of this class. + **/ + public native Constructor[] getConstructors() throws SecurityException; + + /** Get all constructors declared in this class. + ** @return all constructors declared in this class. + ** @exception SecurityException if you do not have access to + ** non-public members of this class. + **/ + public native Constructor[] getDeclaredConstructors() throws SecurityException; + + + /** Get a public method from this class. + ** @param name the name of the method. + ** @param args the argument types for the method. + ** @return the method. + ** @exception NoSuchMethodException if the method does + ** not exist. + ** @exception SecurityException if you do not have access to public + ** members of this class. + **/ + public native Method getMethod(String name, Class[] args) throws NoSuchMethodException, SecurityException; + + /** Get a method declared in this class. + ** @param name the name of the method. + ** @param args the argument types for the method. + ** @return the method. + ** @exception NoSuchMethodException if the method does + ** not exist in this class. + ** @exception SecurityException if you do not have access to + ** non-public members of this class. + **/ + public native Method getDeclaredMethod(String name, Class[] args) throws NoSuchMethodException, SecurityException; + + /** Get all public methods from this class. + ** @return all public methods in this class. + ** @exception SecurityException if you do not have access to public + ** members of this class. + **/ + public native Method[] getMethods() throws SecurityException; + + /** Get all methods declared in this class. + ** @return all methods declared in this class. + ** @exception SecurityException if you do not have access to + ** non-public members of this class. + **/ + public native Method[] getDeclaredMethods() throws SecurityException; + + + /** Get a public field from this class. + ** @param name the name of the field. + ** @return the field. + ** @exception NoSuchFieldException if the field does + ** not exist. + ** @exception SecurityException if you do not have access to public + ** members of this class. + **/ + public native Field getField(String name) throws NoSuchFieldException, SecurityException; + + /** Get a field declared in this class. + ** @param name the name of the field. + ** @return the field. + ** @exception NoSuchFieldException if the field does + ** not exist in this class. + ** @exception SecurityException if you do not have access to + ** non-public members of this class. + **/ + public native Field getDeclaredField(String name) throws NoSuchFieldException, SecurityException; + + /** Get all public fields from this class. + ** @return all public fields in this class. + ** @exception SecurityException if you do not have access to public + ** members of this class. + **/ + public native Field[] getFields() throws SecurityException; + + /** Get all fields declared in this class. + ** @return all fieilds declared in this class. + ** @exception SecurityException if you do not have access to + ** non-public members of this class. + **/ + public native Field[] getDeclaredFields() throws SecurityException; + + private native String nativeGetName(); + private native Class nativeGetSuperclass(); +} |
