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来直观的了解:

java中的泛型与反射

当然,也可以对int,String类测试,

eg:String 的打印结果:

java中的泛型与反射

上一篇:C# 获取SQL Server所有的数据库名称


下一篇:JAVA面向对象-----局部内部类