什么是反射
反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。
如何通过反射获取类
1.创建类
public class Apple {
private Integer id=5;
public String name="qqq";
Integer age=18;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public class Demo {
public static void main(String[] args) {
Class clazz = Apple.class;
System.out.println(clazz.getSimpleName());//类名
System.out.println("-----------------------------------------------");
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
System.out.print("属性名:"+field.getName());
System.out.print(" 类型:"+field.getType());
int modifiers = field.getModifiers();//修饰符默认为int类型需要转换为String类型进行显示
System.out.println(" 修饰符:"+Modifier.toString(modifiers));
}
System.out.println("---------------------------------------------");
/*Method[] methods = clazz.getMethods();*/
Method[] methods = clazz.getDeclaredMethods();
for (Method method : methods) {
System.out.print("方法名称:"+method.getName());//获取方法名称
int modifiers = method.getModifiers();//修饰符默认为int类型需要转换为String类型进行显示
System.out.print(" 修饰符:"+Modifier.toString(modifiers));//获取String类型的修饰符
System.out.println(" 返回类型:"+method.getReturnType());//获取方法的返回类型
Class
[] parameterTypes = method.getParameterTypes();//获取参数类型,是一个数组
System.out.print("参数类型:(");
for (Class
class1 : parameterTypes) {//循环输出
System.out.print(class1.getName()+",");
}
System.out.println(")");
System.out.println();
}
}
}
Apple
-----------------------------------------------
属性名:id 类型:class java.lang.Integer 修饰符:private
属性名:name 类型:class java.lang.String 修饰符:public
属性名:age 类型:class java.lang.Integer 修饰符:
---------------------------------------------
方法名称:getName 修饰符:public 返回类型:class java.lang.String
参数类型:()
方法名称:getId 修饰符:public 返回类型:class java.lang.Integer
参数类型:()
方法名称:setName 修饰符:public 返回类型:void
参数类型:(java.lang.String,)
方法名称:setId 修饰符:public 返回类型:void
参数类型:(java.lang.Integer,)
方法名称:getAge 修饰符:public 返回类型:class java.lang.Integer
参数类型:()
方法名称:setAge 修饰符:public 返回类型:void
参数类型:(java.lang.Integer,)
总结
一点一滴的积累是通向成功的唯一捷径,知识在于平常的积累,再简单的例子,他也有存在的意义。