zoukankan      html  css  js  c++  java
  • 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("		函数名		返回值类型		参数个数		参数信息");
            for(int i=0;i<m.length;i++){
                System.out.print("		"+m[i].getName()+"		"+m[i].getReturnType()+"		"+m[i].getParameterCount()+"		");
                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 的打印结果:

  • 相关阅读:
    XMind中使用快捷键自由移动主题
    【转】】win10 更新后,office2016 激活失效的的解决方法
    不能接收具有研究精神的员工,怎么发展。
    【转】一个伟大的公司必有一个伟大的产品
    【转】】审阅史上最烂的代码
    联想和华为
    用python 实现汉诺塔
    系统架构
    产品 or 项目
    【转】我们就必须承认:这个世界上,有很多问题,就是无解的
  • 原文地址:https://www.cnblogs.com/feiquan/p/9098309.html
Copyright © 2011-2022 走看看