这是我的文件(已更新):

     import java.lang.reflect.*;

public class ClassExtract {

   public void printClassDefinition (String[] args){
       try {
            Class cls = Class.forName(args[0]);
            Field fieldlist[]
              = cls.getDeclaredFields();
            for (int i
              = 0; i < ((fieldlist.length + 1) - (fieldlist.length)); i++)
            {
                Field fld = fieldlist[i];
                System.out.println("+ " + fld.getDeclaringClass().toString().replaceAll("class", ""));
                System.out.println("------");
            }
               for (int j = 0; j < fieldlist.length; j++) {
                   Field fld1 = fieldlist[j];
                   int mod = fld1.getModifiers();
                   System.out.println(Modifier.toString(mod).toString().replaceAll("public", "+")
                           .replaceAll("private", "-").replaceAll("protected", "#") + " " +
                           fld1.getType() + " " + fld1.getName());

               }
            }
          catch (Throwable e) {
             System.err.println(e);
          }

   }
  public static void main(String args[])
  {
      new ClassExtract().printClassDefinition(args);

   }
}


我应该阅读此文件:

    public class Complex{
    private int re;
    private int im;

    public Complex(int re, int im){
    this.re = re;
    this.im = im;
         }


    public Complex add(Complex h){
            return new Complex(this.re+h.re, this.im+h.im);
        }



    public Complex sub(Complex h){
    return new Complex(this.re-h.re, this.im-h.im);
        }

    public String toString(){
        if (im >= 0){
            return re +" + " +im + "i";
        }
        else return re +"  " +im + "i";
    }

    public static void main(String[] args){

    Complex c1 = new Complex(5,1);
    Complex c2 = new Complex(5,0);

    System.out.printf("c1 = %s, c2 = %s\n", c1, c2);
    System.out.printf("c1 + c2 = %s\n", c1.add(c2) );
     }}


它应生成类似以下内容的内容:

    (+) Complex
     ***
    (-) int re
    (-) int im
     ***
    (+) Complex(re:int, im:int)
    (+) add():Complex
    (+) sub():Complex
    (+) toString():String
    (+) main()


由于我的文件反复遍历,因此例如在行后会出现“ re”和“ int”的打印,并且我的格式通常混乱了。我可以使用所有可能的帮助。谢谢。

最佳答案

抱歉,恐怕您的代码离解决方案还有很长的路要走,向您发送正确的答案就像作弊一样。不过,我还是建议您采用以下方法。


创建一个名为printClassDefinition(Class clazz)的函数,这将打印otuput的第一行,一旦完成,创建一个main方法,该方法仅运行代码的这一部分,请运行几次,并确保该函数本身产生正确的输出。
创建一个名为printFields(Class clazz)的函数。此类遍历该类的所有字段,并且仅打印该字段的名称。
在1中创建的主体中,为分隔线添加一条print语句,并调用在步骤2中创建的函数。与在步骤1中一样,练习代码并确保到目前为止,您对结果满意。
创建一个名为printField(Field)的函数,在printFields循环内,将您的println函数替换为对printField的调用。
现在,使您的printField函数为每个字段打印正确的输出。
再次锻炼您的主体,在这个阶段您的班级和领域的输出应该是正确的。
与2相似,创建printMethods(Class clazz)。将此呼叫添加到您的主体,然后进行锻炼。
类似于4,创建printMehod(方法方法)并在printMethods中替换println。就是这样!

07-28 08:18