You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by te...@apache.org on 2006/05/09 12:21:21 UTC
svn commit: r405370 - in /incubator/harmony/enhanced/classlib/trunk/modules:
luni-kernel/src/main/java/java/lang/
luni-kernel/src/main/java/java/lang/reflect/ luni/src/main/java/java/lang/
Author: tellison
Date: Tue May 9 03:21:16 2006
New Revision: 405370
URL: http://svn.apache.org/viewcvs?rev=405370&view=rev
Log:
Bringing java.lang.Class stubs closer to 1.5 spec, and fixing associated downstream effects.
Modified:
incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/Class.java
incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/Constructor.java
incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Boolean.java
incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Byte.java
incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Character.java
incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Double.java
incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Float.java
incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Integer.java
incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Long.java
incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Short.java
Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/Class.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/Class.java?rev=405370&r1=405369&r2=405370&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/Class.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/Class.java Tue May 9 03:21:16 2006
@@ -16,9 +16,13 @@
package java.lang;
import java.io.InputStream;
+import java.io.Serializable;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
+import java.lang.reflect.GenericDeclaration;
import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+import java.lang.reflect.TypeVariable;
import java.net.URL;
import java.security.ProtectionDomain;
@@ -65,7 +69,8 @@
* </dl>
*
*/
-public final class Class<T> implements java.io.Serializable {
+public final class Class<T> implements Serializable, GenericDeclaration, Type {
+
private static final long serialVersionUID = 3206093459760846163L;
/**
@@ -81,7 +86,7 @@
* If the class could not be found
* @see java.lang.Class
*/
- public static Class forName(String className) throws ClassNotFoundException {
+ public static Class<?> forName(String className) throws ClassNotFoundException {
return null;
}
@@ -102,7 +107,7 @@
* If the class could not be found
* @see java.lang.Class
*/
- public static Class forName(String className, boolean initializeBoolean,
+ public static Class<?> forName(String className, boolean initializeBoolean,
ClassLoader classLoader) throws ClassNotFoundException {
return null;
}
@@ -129,6 +134,41 @@
return;
}
+ /**
+ * Answers the annotation of the given type.
+ * If there is no annotation the method returns <code>null</code>.
+ *
+ * @param annotationClass the annotation type.
+ * @return the annotation of the given type, or <code>null</code>
+ * if none.
+ */
+ // TODO: awaiting Annotation defn.
+// public <A extends Annotation> A getAnnotation(Class<A> annotationClass) {
+// return null;
+// }
+
+ /**
+ * Answers all the annotations of the receiver.
+ * If there are no annotations then answers an empty array.
+ *
+ * @return a copy of the array containing the receiver's annotations.
+ */
+ // TODO: awaiting Annotation defn.
+// public Annotation[] getAnnotations() {
+// return null;
+// }
+
+ /**
+ * Answers the canonical name of the receiver.
+ * If the receiver does not have a canonical name, as defined in
+ * the Java Language Spec, then the method returns <code>null</code>.
+ *
+ * @return the receiver cannonical name, or <code>null</code>.
+ */
+ public String getCanonicalName() {
+ return null;
+ }
+
/**
* Answers the classloader which was used to load the class represented by
* the receiver. Answer null if the class was loaded by the system class
@@ -165,7 +205,7 @@
* @return the component type of the receiver.
* @see java.lang.Class
*/
- public Class getComponentType() {
+ public Class<?> getComponentType() {
return null;
};
@@ -182,8 +222,8 @@
* if member access is not allowed
* @see #getConstructors
*/
- public Constructor getConstructor(Class parameterTypes[])
- throws NoSuchMethodException, SecurityException {
+ public Constructor<T> getConstructor(Class... parameterTypes)
+ throws NoSuchMethodException, SecurityException {
return null;
}
@@ -200,6 +240,18 @@
return null;
}
+ /**
+ * Answers the annotations that are directly defined on this type.
+ * Annoations that are inherited are not included in the result.
+ * If there are no annotations, returns an empty array.
+ *
+ * @return a copy of the array containing the receiver's defined annotaions.
+ */
+ // TODO Awaiting defn of Annotation
+// public Annotation[] getDeclaredAnnotations() {
+// return null;
+// }
+
/**
* Answers an array containing all class members of the class which the
* receiver represents. Note that some of the fields which are returned may
@@ -227,10 +279,10 @@
* if member access is not allowed
* @see #getConstructors
*/
- public Constructor getDeclaredConstructor(Class parameterTypes[])
- throws NoSuchMethodException, SecurityException {
- return null;
- }
+ public Constructor<T> getDeclaredConstructor(Class... parameterTypes)
+ throws NoSuchMethodException, SecurityException {
+ return null;
+ }
/**
* Answers an array containing Constructor objects describing all
@@ -294,23 +346,24 @@
* if the method could not be found.
* @throws SecurityException
* If member access is not allowed
+ * @throws NullPointerException if the name parameter is <code>null</code>.
* @see #getMethods
*/
- public Method getDeclaredMethod(String name, Class parameterTypes[])
- throws NoSuchMethodException, SecurityException {
- return null;
- }
+ public Method getDeclaredMethod(String name, Class... parameterTypes)
+ throws NoSuchMethodException, SecurityException {
+ return null;
+ }
/**
- * Answers an array containing Method objects describing all methods which
- * are defined by the receiver. Note that some of the methods which are
- * returned may not be visible in the current execution context.
- *
- * @throws SecurityException
- * if member access is not allowed
- * @return the receiver's methods.
- * @see #getMethods
- */
+ * Answers an array containing Method objects describing all methods which
+ * are defined by the receiver. Note that some of the methods which are
+ * returned may not be visible in the current execution context.
+ *
+ * @throws SecurityException
+ * if member access is not allowed
+ * @return the receiver's methods.
+ * @see #getMethods
+ */
public Method[] getDeclaredMethods() throws SecurityException {
return null;
}
@@ -321,9 +374,44 @@
*
* @return the declaring class of the receiver.
*/
- public Class getDeclaringClass() {
+ public Class<?> getDeclaringClass() {
return null;
}
+
+ /**
+ * Answers the class that directly encloses the receiver. If there is no
+ * enclosing class the method returns <code>null</code>.
+ *
+ * @return the enclosing class or <code>null</code>.
+ */
+ public Class<?> getEnclosingClass() {
+ return null;
+ }
+
+ /**
+ * TODO javadoc
+ *
+ * @return
+ */
+ public Constructor<?> getEnclosingConstructor() {
+ return null;
+ }
+
+ /**
+ * TODO javadoc
+ *
+ * @return
+ */
+ public Method getEnclosingMethod() {
+ return null;
+ }
+
+ /**
+ * TODO javadoc
+ */
+ public T[] getEnumConstants() {
+ return null;
+ }
/**
* Answers a Field object describing the field in the receiver named by the
@@ -356,6 +444,22 @@
return null;
}
+ /**
+ * TODO javadoc
+ *
+ * @return
+ */
+ public Type[] getGenericInterfaces() {
+ return null;
+ }
+
+ /**
+ * TODO javadoc
+ */
+ public Type getGenericSuperclass() {
+ return null;
+ }
+
/**
* Answers an array of Class objects which match the interfaces specified in
* the receiver classes <code>implements</code> declaration
@@ -381,20 +485,20 @@
* if member access is not allowed
* @see #getMethods
*/
- public Method getMethod(String name, Class parameterTypes[])
- throws NoSuchMethodException, SecurityException {
- return null;
- }
+ public Method getMethod(String name, Class... parameterTypes)
+ throws NoSuchMethodException, SecurityException {
+ return null;
+ }
/**
- * Answers an array containing Method objects describing all methods which
- * are visible from the current execution context.
- *
- * @return Method[] all visible methods starting from the receiver.
- * @throws SecurityException
- * if member access is not allowed
- * @see #getDeclaredMethods
- */
+ * Answers an array containing Method objects describing all methods which
+ * are visible from the current execution context.
+ *
+ * @return Method[] all visible methods starting from the receiver.
+ * @throws SecurityException
+ * if member access is not allowed
+ * @see #getDeclaredMethods
+ */
public Method[] getMethods() throws SecurityException {
return null;
}
@@ -423,6 +527,18 @@
return null;
};
+ /**
+ * Answers the simple name of the receiver as defined in the source code.
+ * If there is no name (the class is anonymous) returns an empty string, and
+ * if the receiver is an array returns the name of the underlying type with
+ * square braces appended (e.g. <code>"Integer[]"</code>).
+ *
+ * @return the simple name of the receiver.
+ */
+ public String getSimpleName() {
+ return null;
+ }
+
/**
* Answers the ProtectionDomain of the receiver.
* <p>
@@ -497,10 +613,44 @@
*
* @return the receiver's superclass.
*/
- public Class getSuperclass() {
+ public Class<? super T> getSuperclass() {
return null;
};
+ /**
+ * TODO javadoc
+ */
+ public TypeVariable<Class<T>>[] getTypeParameters() {
+ return null;
+ }
+
+ /**
+ * TODO javadoc
+ *
+ * @return
+ */
+ public boolean isAnnotation() {
+ return false;
+ }
+
+ /**
+ * TODO javadoc
+ *
+ * @param annotationClass
+ * @return
+ */
+ // TODO awaiting defn of annotation
+// public boolean isAnnotationPresent(Class<? extends Annotation> annotationClass) {
+// return false;
+// }
+
+ /**
+ * TODO javadoc
+ */
+ public boolean isAnonymousClass() {
+ return false;
+ }
+
/**
* Answers true if the receiver represents an array class.
*
@@ -525,10 +675,17 @@
* @throws NullPointerException
* if the parameter is null
*/
- public boolean isAssignableFrom(Class cls) {
+ public boolean isAssignableFrom(Class<?> cls) {
return false;
};
+ /**
+ * TODO javadoc
+ */
+ public boolean isEnum() {
+ return false;
+ }
+
/**
* Answers true if the argument is non-null and can be cast to the type of
* the receiver. This is the runtime version of the <code>instanceof</code>
@@ -554,6 +711,26 @@
return false;
}
+ /**
+ * Answers whether the receiver is defined locally.
+ *
+ * @return <code>true</code> if the class is local,
+ * otherwise <code>false</code>.
+ */
+ public boolean isLocalClass() {
+ return false;
+ }
+
+ /**
+ * Answers whether the receiver is a member class.
+ *
+ * @return <code>true</code> if the class is a member class,
+ * otherwise <code>false</code>.
+ */
+ public boolean isMemberClass() {
+ return false;
+ }
+
/**
* Answers true if the receiver represents a base type.
*
@@ -564,6 +741,16 @@
return false;
};
+ /**
+ * Answers whether the receiver is a synthetic type.
+ *
+ * @return <code>true</code> if the receiver is a synthetic type
+ * and <code>false</code> otherwise.
+ */
+ public boolean isSynthetic() {
+ return false;
+ }
+
/**
* Answers a new instance of the class represented by the receiver, created
* by invoking the default (i.e. zero-argument) constructor. If there is no
@@ -579,7 +766,7 @@
* @throws InstantiationException
* if the instance could not be created.
*/
- public Object newInstance() throws IllegalAccessException,
+ public T newInstance() throws IllegalAccessException,
InstantiationException {
return null;
}
@@ -614,6 +801,32 @@
public boolean desiredAssertionStatus() {
return false;
}
+
+ /**
+ * Casts the receiver to a subclass of the given class. If successful
+ * answers the receiver, otherwise if the cast cannot be made throws a
+ * <code>ClassCastException</code>.
+ *
+ * @param clazz the required type.
+ * @return this class cast as a subclass of the given type.
+ * @throws ClassCastException if the class cannot be cast to the given type.
+ */
+ public <U> Class<? extends U> asSubclass(Class<U> clazz) {
+ return null;
+ }
+
+ /**
+ * Cast the given object to the type <code>T</code>.
+ * If the object is <code>null</code> the result is also
+ * <code>null</code>.
+ *
+ * @param obj the object to cast
+ * @return The object that has been cast.
+ * @throws ClassCastException if the object cannot be cast to the given type.
+ */
+ public T cast(Object obj) {
+ return null;
+ }
/**
* This must be provided by the vm vendor, as it is used by other provided
Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/Constructor.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/Constructor.java?rev=405370&r1=405369&r2=405370&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/Constructor.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni-kernel/src/main/java/java/lang/reflect/Constructor.java Tue May 9 03:21:16 2006
@@ -21,7 +21,7 @@
* constructor can be invoked dynamically.
*
*/
-public final class Constructor extends AccessibleObject implements Member {
+public final class Constructor<T> extends AccessibleObject implements Member {
/**
* Compares the specified object to this Constructor and answer if they are
Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Boolean.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Boolean.java?rev=405370&r1=405369&r2=405370&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Boolean.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Boolean.java Tue May 9 03:21:16 2006
@@ -33,7 +33,7 @@
/**
* The java.lang.Class that represents this class.
*/
- public static final Class<Boolean> TYPE = new boolean[0].getClass()
+ public static final Class<Boolean> TYPE = (Class<Boolean>)new boolean[0].getClass()
.getComponentType();
// Note: This can't be set to "boolean.class", since *that* is
Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Byte.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Byte.java?rev=405370&r1=405369&r2=405370&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Byte.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Byte.java Tue May 9 03:21:16 2006
@@ -54,7 +54,8 @@
/**
* The java.lang.Class that represents this class.
*/
- public static final Class<Byte> TYPE = new byte[0].getClass().getComponentType();
+ public static final Class<Byte> TYPE = (Class<Byte>) new byte[0].getClass()
+ .getComponentType();
// Note: This can't be set to "byte.class", since *that* is
// defined to be "java.lang.Byte.TYPE";
Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Character.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Character.java?rev=405370&r1=405369&r2=405370&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Character.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Character.java Tue May 9 03:21:16 2006
@@ -83,7 +83,8 @@
* The maximum possible radix used for conversions between Characters and
* integers.
*/
- public static final Class<Character> TYPE = new char[0].getClass().getComponentType();
+ public static final Class<Character> TYPE = (Class<Character>) new char[0]
+ .getClass().getComponentType();
// Note: This can't be set to "char.class", since *that* is
// defined to be "java.lang.Character.TYPE";
Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Double.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Double.java?rev=405370&r1=405369&r2=405370&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Double.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Double.java Tue May 9 03:21:16 2006
@@ -73,7 +73,7 @@
* The java.lang.Class that represents this class.
* @since 1.1
*/
- public static final Class<Double> TYPE = new double[0].getClass()
+ public static final Class<Double> TYPE = (Class<Double>) new double[0].getClass()
.getComponentType();
// Note: This can't be set to "double.class", since *that* is
Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Float.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Float.java?rev=405370&r1=405369&r2=405370&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Float.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Float.java Tue May 9 03:21:16 2006
@@ -72,7 +72,8 @@
* The java.lang.Class that represents this class.
* @since 1.1
*/
- public static final Class<Float> TYPE = new float[0].getClass().getComponentType();
+ public static final Class<Float> TYPE = (Class<Float>) new float[0]
+ .getClass().getComponentType();
// Note: This can't be set to "float.class", since *that* is
// defined to be "java.lang.Float.TYPE";
Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Integer.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Integer.java?rev=405370&r1=405369&r2=405370&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Integer.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Integer.java Tue May 9 03:21:16 2006
@@ -66,7 +66,8 @@
/**
* The java.lang.Class that represents this class.
*/
- public static final Class<Integer> TYPE = new int[0].getClass().getComponentType();
+ public static final Class<Integer> TYPE = (Class<Integer>) new int[0]
+ .getClass().getComponentType();
// Note: This can't be set to "int.class", since *that* is
// defined to be "java.lang.Integer.TYPE";
Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Long.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Long.java?rev=405370&r1=405369&r2=405370&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Long.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Long.java Tue May 9 03:21:16 2006
@@ -56,7 +56,8 @@
/**
* The java.lang.Class that represents this class.
*/
- public static final Class<Long> TYPE = new long[0].getClass().getComponentType();
+ public static final Class<Long> TYPE = (Class<Long>) new long[0].getClass()
+ .getComponentType();
// Note: This can't be set to "long.class", since *that* is
// defined to be "java.lang.Long.TYPE";
Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Short.java
URL: http://svn.apache.org/viewcvs/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Short.java?rev=405370&r1=405369&r2=405370&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Short.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Short.java Tue May 9 03:21:16 2006
@@ -59,7 +59,8 @@
/**
* The java.lang.Class that represents this class.
*/
- public static final Class<Short> TYPE = new short[0].getClass().getComponentType();
+ public static final Class<Short> TYPE = (Class<Short>) new short[0]
+ .getClass().getComponentType();
// Note: This can't be set to "short.class", since *that* is
// defined to be "java.lang.Short.TYPE";