From 501270975a91bb86caf11a27390868612ca897d3 Mon Sep 17 00:00:00 2001 From: tromey Date: Thu, 1 Feb 2007 20:34:08 +0000 Subject: * java/util/Calendar.java: Implement Comparable. Update comments. (clear): Call complete. (setTimeZone): Call computeTime, computeFields. (compareTo): New method. * java/nio/charset/Charset.java: Implement Comparable. (availableCharsets): Genericized. (aliases): Likewise. (compareTo): Changed argument type. * java/lang/ClassLoader.java (loadClass): Genericized. (findClass): Likewise. (defineClass): Likewise. (resolveClass): Likewise. (findSystemClass): Likewise. (setSigners): Likewise. (findLoadedClass): Likewise. (getResources): Likewise. (findResources): Likewise. (getSystemResources): Likewise. (checkInitialized): New method. * java/lang/Class.java (getCanonicalName): New method. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@121471 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/java/lang/Class.java | 55 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) (limited to 'libjava/java/lang/Class.java') diff --git a/libjava/java/lang/Class.java b/libjava/java/lang/Class.java index a071ee36cd0..b0151db7e2d 100644 --- a/libjava/java/lang/Class.java +++ b/libjava/java/lang/Class.java @@ -1,5 +1,5 @@ /* Class.java -- Representation of a Java class. - Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006 + Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation This file is part of GNU Classpath. @@ -1290,6 +1290,59 @@ public final class Class return v.toArray(new Annotation[v.size()]); } + /** + *

+ * Returns the canonical name of this class, as defined by section + * 6.7 of the Java language specification. Each package, top-level class, + * top-level interface and primitive type has a canonical name. A member + * class has a canonical name, if its parent class has one. Likewise, + * an array type has a canonical name, if its component type does. + * Local or anonymous classes do not have canonical names. + *

+ *

+ * The canonical name for top-level classes, top-level interfaces and + * primitive types is always the same as the fully-qualified name. + * For array types, the canonical name is the canonical name of its + * component type with `[]' appended. + *

+ *

+ * The canonical name of a member class always refers to the place where + * the class was defined, and is composed of the canonical name of the + * defining class and the simple name of the member class, joined by `.'. + * For example, if a Person class has an inner class, + * M, then both its fully-qualified name and canonical name + * is Person.M. A subclass, Staff, of + * Person refers to the same inner class by the fully-qualified + * name of Staff.M, but its canonical name is still + * Person.M. + *

+ *

+ * Where no canonical name is present, null is returned. + *

+ * + * @return the canonical name of the class, or null if the + * class doesn't have a canonical name. + * @since 1.5 + */ + public String getCanonicalName() + { + if (isArray()) + { + String componentName = getComponentType().getCanonicalName(); + if (componentName != null) + return componentName + "[]"; + } + if (isMemberClass()) + { + String memberName = getDeclaringClass().getCanonicalName(); + if (memberName != null) + return memberName + "." + getSimpleName(); + } + if (isLocalClass() || isAnonymousClass()) + return null; + return getName(); + } + /** * Returns all annotations directly defined by this class. If there are * no annotations associated with this class, then a zero-length array -- cgit v1.2.3