使用的实体类Person:
interface China {
public static final String NATIONL="中国";//国籍
public static final String NAME="wjl";//姓名
public void getBasicInfo();
public String setBasicInfo(String userName,String pwd);
}
public class Person implements China{
private String userName;
private String passWord;
//构造方法
public Person(){}
public Person(String userName) {
this.userName = userName;
}
public Person(String userName, String passWord) {
this(userName);//调用一个参数的构造方法
this.passWord = passWord;
}
//父类方法
public void getBasicInfo() {
System.out.println("国籍:"+NATIONL+",姓名:"+NAME);
}
public String setBasicInfo(String userName, String pwd) {
return "用户名:"+userName+",密码:"+pwd;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
}
1、获取接口信息和父类信息:
public static void main(String[] args) {
Class<?> c = null;
try{
c = Class.forName("com.wjl.reflect.Person");
//1、获取所有的接口信息
Class<?> interfaces[] = c.getInterfaces();
System.out.println("\n接口:");
for(int j=0;j<interfaces.length;j++){
System.out.println(interfaces[j].getName());
}
//2、获取父类信息
Class<?> parentClass = c.getSuperclass();
System.out.println("\n父类信息:\n"+parentClass);
}catch(Exception e){
e.printStackTrace();
}
}
2、获取属性:
public static void main(String[] args) {
try{
Class<?> c = Class.forName("com.wjl.reflect.Person");
Field field[] = c.getDeclaredFields();//获取公用属性
System.out.println("本类中的属性:");
for(int i=0;i<field.length;i++){
System.out.println("系统:"+field[i]);
System.out.print("自定义:");
getFieldInfo(field[i]);
}
//公共属性
Field fields[] = c.getFields();
System.out.println("\n公共属性:");
for(int i=0;i<fields.length;i++){
System.out.println("系统:"+fields[i]);
System.out.print("自定义:");
getFieldInfo(fields[i]);
}
}catch(Exception e){
e.printStackTrace();
}
}
//该方法用来获取各个属性信息
public static void getFieldInfo(Field field){
System.out.print(Modifier.toString(field.getModifiers())+" ");//修饰符
System.out.print(field.getType().getName()+" ");//数据类型
System.out.print(field.getName());//方法名称
System.out.println(";");
}
3、获取方法:
public static void main(String[] args) {
Class<?> c = null;
try{
c = Class.forName("com.wjl.reflect.Person");
//1、获取本类中的所有方法
Method[] methods = c.getDeclaredMethods();
System.out.println("\n本类中的所有方法:");
for(int i=0;i<methods.length;i++){
// System.out.println("系统:"+methods[i]);
System.out.print("自定义:");
getMethodInfo(methods[i]);
}
//2、输出全部方法:本类中的方法+父类中的方法
Method[] methodes = c.getMethods();
System.out.println("\n本类和父类的所有方法:");
for(int i=0;i<methodes.length;i++){
System.out.println("系统:"+methodes[i]);
System.out.print("自定义:");
getMethodInfo(methodes[i]);
}
}catch(Exception e){
e.printStackTrace();
}
}
//获取方法信息
public static void getMethodInfo(Method method){
System.out.print(Modifier.toString(method.getModifiers())+" ");//修饰符
System.out.print(method.getReturnType().getName()+" ");//返回值类型
System.out.print(method.getName());//方法名称
//各个参数
Class<?> parames[] = method.getParameterTypes();
System.out.print("(");
for(int i=0;i<parames.length;i++){
System.out.print(parames[i].getName()+" arg"+i);//参数名称
if(i<parames.length-1){//添加逗号隔开
System.out.print(",");
}
}
System.out.print(")");
//获取异常信息
Class<?> ex[] = method.getExceptionTypes();
if(ex.length>0){//说明有异常
System.out.print(" throws ");
for(int j=0;j<ex.length;j++){
System.out.print(ex[j].getName());
if(j<ex.length-1) System.out.print(",");
}
}
System.out.println();
}