概述
给定类名,打印关于类的所有信息
import java.lang.reflect.*;
import javax.activation.FileDataSource;
public class ReflactionTest {
public ReflactionTest() {
}
public static void print(String s){
System.out.print(s);
}
public static void println(String s){
System.out.println(s);
}
public static void main(String[]args)
{
String name="java.awt.Button";
try {
Class cl=Class.forName(name);
Class supercl=cl.getSuperclass();
String clmodifiers=Modifier.toString(cl.getModifiers());
if(clmodifiers.length()>0)
print(clmodifiers+" ");
print(name+" ");
if(supercl!=null&&supercl!=Object.class)
println("extends "+supercl.getName());
println("{");
printField(cl);
println("");
printConstructor(cl);
println("");
printMethods(cl);
println("}");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//打印所有构造器信息
public static void printConstructor(Class cl)
{
Constructor[]constructors=cl.getConstructors();
for(Constructor c:constructors)
{
String name=c.getName();
print("t");
String modifer=Modifier.toString(c.getModifiers());
if(modifer.length()>0)
print(modifer+" ");
print(name+"(");
Class []parmTypes=c.getParameterTypes();
for(int i=0;i<parmTypes.length;i++)
{
if(i>0)print(", ");
print(parmTypes[i].getTypeName());
}
println(");");
}
}
//打印所有方法信息
public static void printMethods(Class cl)
{
Method []methods=cl.getDeclaredMethods();
for(Method c:methods)
{
String name=c.getName();
print("t");
String modifer=Modifier.toString(c.getModifiers());
if(modifer.length()>0)
print(modifer+" ");
print(name+"(");
Class []parmTypes=c.getParameterTypes();
for(int i=0;i<parmTypes.length;i++)
{
if(i>0)print(", ");
print(parmTypes[i].getTypeName());
}
println(");");
}
}
//打印类域信息
public static void printField(Class cl)
{
Field []fields=cl.getFields();
for(Field f:fields)
{
Class typeClass=f.getType();
String name=f.getName();
print("t");
String modifier=Modifier.toString(f.getModifiers());
if(modifier.length()>0)
print(modifier+" ");
println(typeClass.getName()+" "+name+" ");
}
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
转载于:https://www.cnblogs.com/Thereisnospon/p/4768435.html
最后
以上就是完美蜡烛为你收集整理的JAVA 反射练习 打印指定类名的所有信息的全部内容,希望文章能够帮你解决JAVA 反射练习 打印指定类名的所有信息所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复