利用Java的反射机制编写的可以扩展任意数组大小

Linux公社

 

 

首页Linux编程

背景:

阅读新闻

利用Java的反射机制编写的可以扩展任意数组大小的方法

[日期:2009-09-27]   来源:hi.baidu.com/fhbch  作者:fhbch   [字体:]  

利用Java的反射机制编写的可以扩展任意数组大小的方法

import java.util.*;
import java.lang.reflect.*;
public class ReflectionTest
{
public static void main(String[] args)
{
   String name;
   if(args.length>0)
   {
    name=args[0];
   }
   else
   {
    Scanner in=new Scanner(System.in);
    System.out.println("Enter class name(e.g. java.util.Date):");
    name=in.next();
   }
   try
   {
    Class c1=Class.forName(name);
    Class superc1=c1.getSuperclass();
    System.out.print("class "+name);
    if(superc1!=null&&superc1!=Object.class)
    {
     System.out.print(" extends "+superc1.getName());
    }
    System.out.print("\n{\n");
    printConstructors(c1);
    System.out.println();
    printMethods(c1);
    System.out.println();
    printFields(c1);
    System.out.println("}");
   }
   catch(ClassNotFoundException e)
   {
    e.printStackTrace();
   }
   System.exit(0);
}
public static void printConstructors(Class c1)
{
   Constructor[] constructors=c1.getDeclaredConstructors();
   for(Constructor c:constructors)
   {
    String name=c.getName();
    System.out.print("   "+Modifier.toString(c.getModifiers()));
    System.out.print(" "+name+"(");
    Class[] paramTypes=c.getParameterTypes();
    for(int j=0;j<paramTypes.length;j++)
    {
     if(j>0)
     {
      System.out.print(", ");
     }
     System.out.print(paramTypes[j].getName());
    }
    System.out.println(");");
   }
}
public static void printMethods(Class c1)
{
   Method[] methods=c1.getDeclaredMethods();
   for(Method m:methods)
   {
    Class retType=m.getReturnType();
    String name=m.getName();
    System.out.print("   "+Modifier.toString(m.getModifiers()));
    System.out.print(" "+retType.getName()+" "+name+"(");
    Class[] paramTypes=m.getParameterTypes();
    for(int j=0;j<paramTypes.length;j++)
    {
     if(j>0)
     {
      System.out.print(", ");
     }
     System.out.print(paramTypes[j].getName());
    }
    System.out.println(");");
   }
}
public static void printFields(Class c1)
{
   Field[] fields=c1.getDeclaredFields();
   for(Field f:fields)
   {
    Class type=f.getType();
    String name=f.getName();
    System.out.print("   "+Modifier.toString(f.getModifiers()));
    System.out.println(" "+type.getName()+" "+name+";");
   }
}
}

C++十个最具人气关键字

将Java程序部署到Linux上并让其定期执行

相关资讯       Java 

   

本文评论   查看全部评论 (0)


评论声明

尊重网上道德,遵守中华人民共和国的各项有关法律法规

承担一切因您的行为而直接或间接导致的民事或刑事法律责任

本站管理人员有权保留或删除其管辖留言中的任意内容

本站有权在网站内转载或引用您的评论

参与本评论即表明您已经阅读并接受上述条款

 

 

 

最新资讯

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwpxgs.html