首先创建一个Dog类:
package com.hubin.reflection;
public class Dog {
private String name;
private String age;
private String skill;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getSkill() {
return skill;
}
public void setSkill(String skill) {
this.skill = skill;
}
public void cry() {
System.out.println("汪星人!!!!");
}
public void cry(String name, int age) {
System.out.println("我是" + name + "我已经" + age + "岁了");
}
}
创建另外一个类GetMoster:
package com.hubin.reflection;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class GetMoster {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
getAnimal(new Dog());
}
public static Object getAnimal(Object obj){
Class animal=obj.getClass();
System.out.println("*********************获取类中所有属性******************************************************");
Field[] filed=animal.getDeclaredFields();
for(int i=0;i<filed.length;i++){
//打印类中所有属性名称
System.out.println(filed[i].getName());
}
System.out.println("*********************获取类中所有方法*******************************************************");
Method []m=animal.getDeclaredMethods();
for(int i=0;i<m.length;i++){
System.out.println(m[i].getName());
}
System.out.println("*********************调用指定的方法*******************************************************");
try {
//调用类中cry()方法
Method method=animal.getMethod("cry", new Class[]{String.class,int.class});
method.invoke(animal.newInstance(),new Object[]{"犬夜叉",50});
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("*********************调用指定的方法*******************************************************");
try {
//调用类中cry(String name,int age)方法
Method method=animal.getMethod("cry", new Class[]{});
method.invoke(animal.newInstance(),new Object[]{});
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
执行结果:
*********************获取类中所有属性******************************************************
name
age
skill
*********************获取类中所有方法*******************************************************
getName
setName
cry
cry
getAge
setAge
getSkill
setSkill
*********************调用指定的方法*******************************************************
我是犬夜叉我已经50岁了
*********************调用指定的方法*******************************************************
汪星人!!!!
本文通过创建Dog类并使用反射技术获取类中所有属性和方法,并演示如何调用特定方法,深入理解Java面向对象编程和反射机制。
1020

被折叠的 条评论
为什么被折叠?



