java中的泛型与反射
在java开发中,大多数情况是多人开发,那么如何在没有API的情况下,快速的理解到别人开发的一些类的详细信息呢?
比如函数名,类名,返回参数等等
我们可以定义一个反射机制的类,通过此类来打印此你想要操作的类的信息:
反射机制类的定义:(我这里只定义了部分信息的打印)
package forward.shop; import java.lang.reflect.Method; import java.lang.reflect.Parameter; //反射机制类 public class Reflect<R> { private R r; Reflect(R r){ this.r=r; } public void getClassName(){ System.out.println("该类的类型为:"+r.getClass().getName()); } public void getFunctionName(){ System.out.println("该类型的函数信息:"); Method []m=r.getClass().getDeclaredMethods(); System.out.println("\t\t函数名\t\t返回值类型\t\t参数个数\t\t参数信息"); for(int i=0;i<m.length;i++){ System.out.print("\t\t"+m[i].getName()+"\t\t"+m[i].getReturnType()+"\t\t"+m[i].getParameterCount()+"\t\t"); Parameter[] p=m[i].getParameters(); for(int j =0;j<p.length;j++){ System.out.print(p[j].getType()+" "+p[j].getName()); } System.out.println(""); } } }
主函数:
package forward.shop; public class reflectModel { public static void main(String[] args) { Shop s1=new Shop("001","话梅",3); Reflect<Shop> r=new Reflect<Shop>(s1); //要检测的类为Shop类 r.getClassName(); r.getFunctionName(); } }
输出结果:
该类的类型为:forward.shop.Shop 该类型的函数信息: 函数名 返回值类型 参数个数 参数信息 toString class java.lang.String 0 getName class java.lang.String 0 setName void 1 class java.lang.String arg0 getNo class java.lang.String 0 setPrice void 1 float arg0 setNo void 1 class java.lang.String arg0 getPrice float 0
我们也可以直接将打印信息输出到xlsx中,使用Excel来直观的了解:
当然,也可以对int,String类测试,
eg:String 的打印结果:
如果是此文是转载文章,本人会附上转载链接,此篇文章的版权归原创作者所属,如果侵权请与我联系,我会删除此文。
若没有标明转载链接,此篇文章属于本人的原创文章,其版权所属:
作者:feiquan
出处:http://www.cnblogs.com/feiquan/
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
大家写文都不容易,请尊重劳动成果~ 这里谢谢大家啦(*/ω\*)
若没有标明转载链接,此篇文章属于本人的原创文章,其版权所属:
作者:feiquan
出处:http://www.cnblogs.com/feiquan/
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
大家写文都不容易,请尊重劳动成果~ 这里谢谢大家啦(*/ω\*)