classdocreflectedimpl.java

来自「linux下建立JAVA虚拟机的源码KAFFE」· Java 代码 · 共 203 行

JAVA
203
字号
/* gnu.classpath.tools.gjdoc.ClassDocReflectedImpl   Copyright (C) 2001 Free Software Foundation, Inc.   This file is part of GNU Classpath.   GNU Classpath is free software; you can redistribute it and/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation; either version 2, or (at your option)   any later version.    GNU Classpath 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   General Public License for more details.   You should have received a copy of the GNU General Public License   along with GNU Classpath; see the file COPYING.  If not, write to the   Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA   02111-1307 USA. */package gnu.classpath.tools.gjdoc;import com.sun.javadoc.*;import java.util.Map;import java.util.HashMap;public class ClassDocReflectedImpl   implements ClassDoc, WritableType{   private Class clazz;   private String name;   private ClassDoc superclassDoc;   private ClassDoc[] unfilteredInnerClasses;   private String dimension = "";   private static Map reflectionCache = new HashMap();   public static ClassDocReflectedImpl newInstance(Class clazz)   {      ClassDocReflectedImpl result          = (ClassDocReflectedImpl)reflectionCache.get(clazz);      if (null != result) {         return result;      }      else {         return new ClassDocReflectedImpl(clazz);      }   }   public ClassDocReflectedImpl(Class clazz)   {      reflectionCache.put(clazz, this);      //System.err.println("ClassDocReflectedImpl: " + clazz);            this.clazz = clazz;      String className = clazz.getName();      int ndx = className.lastIndexOf('.');      if (ndx >= 0) {         this.name = className.substring(ndx + 1);      }      else {         this.name = className;      }      Class superclass = clazz.getSuperclass();      if (null != superclass && !clazz.getName().equals("java.lang.Object")) {         this.superclassDoc = (ClassDocReflectedImpl)reflectionCache.get(superclass);         if (null == this.superclassDoc) {            this.superclassDoc = new ClassDocReflectedImpl(superclass);         }      }      Class[] innerclasses = clazz.getDeclaredClasses();      this.unfilteredInnerClasses = new ClassDoc[innerclasses.length];      for (int i=0; i<innerclasses.length; ++i) {         this.unfilteredInnerClasses[i] = (ClassDocReflectedImpl)reflectionCache.get(innerclasses[i]);         if (null == this.unfilteredInnerClasses[i]) {            this.unfilteredInnerClasses[i] = new ClassDocReflectedImpl(innerclasses[i]);            //System.err.println("adding " + this.unfilteredInnerClasses[i] + " [" + innerclasses[i] + "] as inner class of " + this + " [" + clazz + "]");         }      }   }   public ConstructorDoc[] constructors() { return new ConstructorDoc[0]; }    public ConstructorDoc[] constructors(boolean filtered) { return new ConstructorDoc[0]; }   public boolean definesSerializableFields() { return false; }    public FieldDoc[] fields() { return new FieldDoc[0]; }    public FieldDoc[] fields(boolean filtered) { return new FieldDoc[0]; }    public ClassDoc findClass(java.lang.String className) { return null; }    public ClassDoc[] importedClasses() { return new ClassDoc[0]; }    public PackageDoc[] importedPackages() { return new PackageDoc[0]; }    public ClassDoc[] innerClasses() { return new ClassDoc[0]; }    public ClassDoc[] innerClasses(boolean filtered)    {       if (filtered) {         return new ClassDoc[0];      }      else {         return unfilteredInnerClasses;      }   }      public ClassDoc[] interfaces() { return new ClassDoc[0]; }    public boolean isAbstract() { return false; }    public boolean isExternalizable() { return false; }    public boolean isSerializable() { return false; }    public MethodDoc[] methods() { return new MethodDoc[0]; }    public MethodDoc[] methods(boolean filtered) { return new MethodDoc[0]; }    public FieldDoc[] serializableFields() { return new FieldDoc[0]; }    public MethodDoc[] serializationMethods() { return new MethodDoc[0]; }    public boolean subclassOf(ClassDoc cd) { return false; }    public ClassDoc superclass() {       return superclassDoc;   }    public ClassDoc containingClass()    {      Class declaringClass = clazz.getDeclaringClass();      if (null != declaringClass) {         return new ClassDocReflectedImpl(declaringClass);      }      else {         return null;      }   }    public PackageDoc containingPackage()    {      Class outerClass = clazz;      while (null != outerClass.getDeclaringClass()) {         outerClass = outerClass.getDeclaringClass();      }      String packageName = outerClass.getName();      int ndx = packageName.lastIndexOf('.');      if (ndx > 0) {         packageName = packageName.substring(0, ndx);      }      else {         packageName = "";      }      PackageDoc result =  Main.getRootDoc().findOrCreatePackageDoc(packageName);      return result;   }   public boolean isFinal() { return false; }    public boolean isPackagePrivate() { return false; }    public boolean isPrivate() { return false; }    public boolean isProtected() { return false; }    public boolean isPublic() { return false; }    public boolean isStatic() { return false; }    public String modifiers() { return ""; }    public int modifierSpecifier() { return 0; }    public String qualifiedName() { return clazz.getName().replace('$', '.'); }    public String commentText() { return null; }    public Tag[] firstSentenceTags() { return new Tag[0]; }    public String getRawCommentText() { return null; }    public Tag[] inlineTags() { return new Tag[0]; }    public boolean isClass() { return false; }    public boolean isConstructor() { return false; }    public boolean isError() { return false; }    public boolean isException() { return false; }    public boolean isField() { return false; }    public boolean isIncluded() { return false; }    public boolean isInterface() { return false; }    public boolean isMethod() { return false; }    public boolean isOrdinaryClass() { return false; }    public String name() { return name; }    public SourcePosition position() { return null; }   public SeeTag[] seeTags() { return new SeeTag[0]; }    public void setRawCommentText(java.lang.String rawDocumentation) {}    public Tag[] tags() { return new Tag[0]; }    public Tag[] tags(java.lang.String tagname) { return new Tag[0]; }   public String typeName() { return name; }   public String qualifiedTypeName() { return qualifiedName(); }   public ClassDoc asClassDoc() { return this; }   public TypeVariable asTypeVariable() { return null; }   public boolean isPrimitive() { return false; }   public String toString() { return "ClassDocReflectedImpl{"+qualifiedName()+"}"; }   public int compareTo(java.lang.Object o) {      if (o instanceof Doc) {         return Main.getInstance().getCollator().compare(name(), ((Doc)o).name());      }      else {         return 0;      }   }   public String dimension() { return dimension; }   public void setDimension(String dimension) {      this.dimension = dimension;   }   public Object clone() throws CloneNotSupportedException {      return super.clone();   }   public TypeVariable[] typeParameters() { return new TypeVariable[0]; } }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?