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

猜你喜欢

转载自www.cnblogs.com/feiquan/p/9098309.html