Byte.java, [...]: Fixed javadocs, coding style and argument names all over.
2004-04-20 Michael Koch <konqueror@gmx.de> * java/lang/Byte.java, java/lang/CharSequence.java, java/lang/ClassLoader.java, java/lang/Compiler.java, java/lang/Double.java, java/lang/Float.java, java/lang/Integer.java, java/lang/Long.java, java/lang/Math.java, java/lang/Number.java, java/lang/Package.java, java/lang/Runtime.java, java/lang/RuntimePermission.java, java/lang/SecurityManager.java, java/lang/Short.java, java/lang/StringBuffer.java, java/lang/System.java, java/lang/ThreadGroup.java, java/lang/Throwable.java, java/lang/reflect/InvocationHandler.java, java/lang/reflect/Proxy.java: Fixed javadocs, coding style and argument names all over. From-SVN: r80899
This commit is contained in:
committed by
Michael Koch
parent
9f714d5eec
commit
cf6f7d5589
@@ -49,37 +49,38 @@ package java.lang.reflect;
|
||||
* interface. But in order for the proxy instance to do any good, it
|
||||
* needs to know what to do when interface methods are invoked! So,
|
||||
* this interface is basically a cool wrapper that provides runtime
|
||||
* code generation needed by proxy instances.<p>
|
||||
* code generation needed by proxy instances.
|
||||
*
|
||||
* While this interface was designed for use by Proxy, it will also
|
||||
* work on any object in general.<p>
|
||||
* <p>While this interface was designed for use by Proxy, it will also
|
||||
* work on any object in general.</p>
|
||||
*
|
||||
* Hints for implementing this class:<br>
|
||||
* <p>Hints for implementing this class:</p>
|
||||
*
|
||||
* <ul>
|
||||
* <li>Don't forget that Object.equals, Object.hashCode, and
|
||||
* Object.toString will call this handler. In particular,
|
||||
* a naive call to proxy.equals, proxy.hashCode, or proxy.toString
|
||||
* will put you in an infinite loop. And remember that string
|
||||
* concatenation also invokes toString.</li>
|
||||
* <li>Obey the contract of the Method object you are handling, or
|
||||
* the proxy instance will be forced to throw a
|
||||
* {@link NullPointerException}, {@link ClassCastException},
|
||||
* or {@link UndeclaredThrowableException}.</li>
|
||||
* <li>Be prepared to wrap/unwrap primitives as necessary.</li>
|
||||
* <li>The Method object may be owned by a different interface than
|
||||
* what was actually used as the qualifying type of the method
|
||||
* invocation in the Java source code. This means that it might
|
||||
* not always be safe to throw an exception listed as belonging
|
||||
* to the method's throws clause.</li>
|
||||
* <li>Don't forget that Object.equals, Object.hashCode, and
|
||||
* Object.toString will call this handler. In particular,
|
||||
* a naive call to proxy.equals, proxy.hashCode, or proxy.toString
|
||||
* will put you in an infinite loop. And remember that string
|
||||
* concatenation also invokes toString.</li>
|
||||
* <li>Obey the contract of the Method object you are handling, or
|
||||
* the proxy instance will be forced to throw a
|
||||
* {@link NullPointerException}, {@link ClassCastException},
|
||||
* or {@link UndeclaredThrowableException}.</li>
|
||||
* <li>Be prepared to wrap/unwrap primitives as necessary.</li>
|
||||
* <li>The Method object may be owned by a different interface than
|
||||
* what was actually used as the qualifying type of the method
|
||||
* invocation in the Java source code. This means that it might
|
||||
* not always be safe to throw an exception listed as belonging
|
||||
* to the method's throws clause.</li>
|
||||
* </ul>
|
||||
*
|
||||
* <p><small>For a fun time, create an InvocationHandler that handles the
|
||||
* methods of a proxy instance of the InvocationHandler interface!</small>
|
||||
* methods of a proxy instance of the InvocationHandler interface!</small></p>
|
||||
*
|
||||
* @see Proxy
|
||||
* @see UndeclaredThrowableException
|
||||
*
|
||||
* @author Eric Blake <ebb9@email.byu.edu>
|
||||
* @author Eric Blake (ebb9@email.byu.edu)
|
||||
* @since 1.3
|
||||
* @status updated to 1.4
|
||||
*/
|
||||
|
||||
@@ -211,35 +211,36 @@ public class Proxy implements Serializable
|
||||
* Returns the proxy {@link Class} for the given ClassLoader and array
|
||||
* of interfaces, dynamically generating it if necessary.
|
||||
*
|
||||
* There are several restrictions on this method, the violation of
|
||||
* <p>There are several restrictions on this method, the violation of
|
||||
* which will result in an IllegalArgumentException or
|
||||
* NullPointerException:
|
||||
* NullPointerException:</p>
|
||||
*
|
||||
* <ul>
|
||||
* <li>All objects in `interfaces' must represent distinct interfaces.
|
||||
* Classes, primitive types, null, and duplicates are forbidden.</li>
|
||||
* <li>The interfaces must be visible in the specified ClassLoader.
|
||||
* In other words, for each interface i:
|
||||
* <code>Class.forName(i.getName(), false, loader) == i</code>
|
||||
* must be true.</li>
|
||||
* <li>All non-public interfaces (if any) must reside in the same
|
||||
* package, or the proxy class would be non-instantiable. If
|
||||
* there are no non-public interfaces, the package of the proxy
|
||||
* class is unspecified.</li>
|
||||
* <li>All interfaces must be compatible - if two declare a method
|
||||
* with the same name and parameters, the return type must be
|
||||
* the same and the throws clause of the proxy class will be
|
||||
* the maximal subset of subclasses of the throws clauses for
|
||||
* each method that is overridden.</li>
|
||||
* <li>VM constraints limit the number of interfaces a proxy class
|
||||
* may directly implement (however, the indirect inheritance
|
||||
* of {@link Serializable} does not count against this limit).
|
||||
* Even though most VMs can theoretically have 65535
|
||||
* superinterfaces for a class, the actual limit is smaller
|
||||
* because a class's constant pool is limited to 65535 entries,
|
||||
* and not all entries can be interfaces.</li>
|
||||
* </ul><p>
|
||||
* <li>All objects in `interfaces' must represent distinct interfaces.
|
||||
* Classes, primitive types, null, and duplicates are forbidden.</li>
|
||||
* <li>The interfaces must be visible in the specified ClassLoader.
|
||||
* In other words, for each interface i:
|
||||
* <code>Class.forName(i.getName(), false, loader) == i</code>
|
||||
* must be true.</li>
|
||||
* <li>All non-public interfaces (if any) must reside in the same
|
||||
* package, or the proxy class would be non-instantiable. If
|
||||
* there are no non-public interfaces, the package of the proxy
|
||||
* class is unspecified.</li>
|
||||
* <li>All interfaces must be compatible - if two declare a method
|
||||
* with the same name and parameters, the return type must be
|
||||
* the same and the throws clause of the proxy class will be
|
||||
* the maximal subset of subclasses of the throws clauses for
|
||||
* each method that is overridden.</li>
|
||||
* <li>VM constraints limit the number of interfaces a proxy class
|
||||
* may directly implement (however, the indirect inheritance
|
||||
* of {@link Serializable} does not count against this limit).
|
||||
* Even though most VMs can theoretically have 65535
|
||||
* superinterfaces for a class, the actual limit is smaller
|
||||
* because a class's constant pool is limited to 65535 entries,
|
||||
* and not all entries can be interfaces.</li>
|
||||
* </ul>
|
||||
*
|
||||
* Note that different orders of interfaces produce distinct classes.
|
||||
* <p>Note that different orders of interfaces produce distinct classes.</p>
|
||||
*
|
||||
* @param loader the class loader to define the proxy class in; null
|
||||
* implies the bootstrap class loader
|
||||
|
||||
Reference in New Issue
Block a user