rt, 获取信息后可以用来生产文档,
这是一个不错的主意, 有没有谁做过?
刚试了下,有点问题!
谁有做过给我发一份代码吧!
thank you!

解决方案 »

  1.   

    java核心技术I卷   讲继承的那一张,里面有一小节讲了反射, 里面我记得有一个很详细的例子,就是根据一个类名,生成一个Class,  就像编译那样...  楼主可以自己去看看,别动不动就来要代码。
      

  2.   

    反射出属性好办 ,相信楼主没问题
    反射出方法,就得到Method对象,然后查查API里面有getParameterTypes() 方法 ,获得参数类型
      

  3.   

    要是做javadoc    toGenericString()方法特别爽,能将你整个方法的声明作为字符串返回,再处理字符串,就能得到整个方法你想要的部分
      

  4.   

    以下是我写的,但是获取私有属性的时候出问题了,请教
    package pk.main;import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    import java.lang.reflect.Modifier;import pk.test.TestClass;public class InfoGetter { public static void main(String[] args) {
    Class<?> testClass = null;
    try {
    testClass = Class.forName("pk.test.TestClass");
    } catch (ClassNotFoundException e) {
    System.out.println("ERROR");
    return;
    } TestClass testClassImpl = new TestClass();
    printlnFields(testClassImpl);
    printlnMethods(testClass.getDeclaredMethods());
    } private static void printlnFields(TestClass testClassImpl) {
    for (Field field : testClassImpl.getClass().getDeclaredFields()) {
    System.out.println("Field : " + field.getName());
    System.out
    .println("    " + Modifier.toString(field.getModifiers()));
    try {
    System.out.println(field.get(testClassImpl));
    } catch (IllegalArgumentException e) {
    e.printStackTrace();
    } catch (IllegalAccessException e) {
    e.printStackTrace();
    }
    }
    } private static void printlnMethods(Method[] methods) {
    for (Method method : methods) {
    System.out.println("Method : " + method.getName());
    System.out.println("    "
    + Modifier.toString(method.getModifiers()));
    }
    }
    }package pk.test;public class TestClass {

    int nor0;
    int nor1 = 0;
    private int pri0;
    private int pri1 = 0;
    public int pub0;
    public int pub1 = 0; public static void main(String[] args) { } private void norFoo0() { }

    public void norFoo1() { }
    }
      

  5.   

    私有属性必须要setAccessible(true);  否则看不到的,早贴代码不就解决了么
      

  6.   

    试了下,确实是这个问题,就是想问下,有没有更好的代码啊?
    看我自己的代码感觉和helloworld似地
      

  7.   


    //print methods of a class
        public static void printMethods(Class<?> clazz){
            java.lang.reflect.Method methods[]=clazz.getDeclaredMethods();
    for(java.lang.reflect.Method method : methods){
    method.setAccessible(true);
    StringBuilder sb=new StringBuilder();  
    int mod = method.getModifiers();
    String modifier = Modifier.toString(mod);
    sb.append(modifier);//modifier
    sb.append(" ");
    sb.append(method.getReturnType().getName());//return type
    sb.append(" ");
    sb.append(method.getName());               //method name
    sb.append("(");
    Class<?> paramsClazz[]=method.getParameterTypes();//parameter type 
    for(Class<?> paramClazz : paramsClazz){
    sb.append(paramClazz.getName());
    sb.append(",");
    }
                if(paramsClazz.length>0)sb.deleteCharAt(sb.length()-1);
    sb.append(")");
    Class<?>[] clazzExceptions = method.getExceptionTypes();//Exception type
    if(clazzExceptions.length>0)sb.append(" throws ");
    for(Class<?> clazzException : clazzExceptions){
        sb.append(clazzException.getName());
    sb.append(",");
    }
    if(clazzExceptions.length>0)sb.deleteCharAt(sb.length()-1);
    System.out.println(sb);
    }
    }
        //print fields of a class
        public static void printFields(Class<?> clazz){
         java.lang.reflect.Field fields[] = clazz.getDeclaredFields();
         for(java.lang.reflect.Field field : fields){
         field.setAccessible(true);
         int mod = field.getModifiers();
         String modifier = java.lang.reflect.Modifier.toString(mod);
         String filedName = field.getName();
         String type = field.getType().getName();
         System.out.println(modifier +" "+ type +" "+filedName);
         }
        }
      

  8.   


    helloword可是程序界的经典代码,.............
      

  9.   

    楼主想得到什么样的文档? API 吗,用 jdk 中带的javadoc.exe就可以了啊
      

  10.   

    这个不错,我看了下api,貌似注释也可以获取到的嘛,下次我试试