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 的打印结果:

  • 相关阅读:
    算法------------数组----------------两个数组的交集 II
    算法-----------数组------------只出现一次的数字
    算法------数组---------存在重复元素
    androd hook acitivity 启动流程,替换启动的activity(Android Instrumentation)
    算法--------旋转数组
    Android 项目,没有可运行的Module项
    Java多线程系列目录(共43篇)
    python3:tuple元组
    python 3 :list
    python3 基本数据类型
  • 原文地址:https://www.cnblogs.com/feiquan/p/9098309.html
Copyright © 2011-2022 走看看