java反射技术,
java反射技术,
反射的作用就是让我们能够更好的获取类、对象中的属性,反射最好的运用就是.class文件反编译为.java文件。
java中反射的实现步骤:
1.获取被反射的类:Class c =Class.forName("");
2.新建类的实例化:Objecto = c.newInstance();
3.获取类中所有属性: Field[] fs = c.getDeclaredFields();
4.循环遍历属性: for(Field field:fs) 给字段赋值时,如private时需要设置field.setAccessible(true)
5.获取详细属性内容:如方法返回类型,方法参数类型,方法名,获取构造函数,获取类的父类,获取类的实现接口等
方法关键字 |
含义 |
getDeclaredMethods() |
获取所有的方法 |
getReturnType() |
获得方法的放回类型 |
getParameterTypes() |
获得方法的传入参数类型 |
getDeclaredMethod("方法名",参数类型.class,……) |
获得特定的方法 |
|
|
构造方法关键字 |
含义 |
getDeclaredConstructors() |
获取所有的构造方法 |
getDeclaredConstructor(参数类型.class,……) |
获取特定的构造方法 |
|
|
父类和父接口 |
含义 |
getSuperclass() |
获取某类的父类 |
getInterfaces() |
获取某类实现的接口 |
最后看看代码:
package cn.edu.FieldClass;
public class User {
private int id;
public String name;
public String age;
public User(){
}
public User(int id,String name,String age){
this.name=name;
this.age=age;
this.id=id;
}
public String toString(){
return id+","+name+","+age;
}
}
package cn.edu.FieldClass;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public class MyField {
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
Class cls=Class.forName("cn.edu.FieldClass.User");
Object obj=cls.newInstance();
Field[] f=cls.getDeclaredFields();
for (Field field : f) {
System.out.print(field.getName()+",");
System.out.print(Modifier.toString(field.getModifiers())+",");
System.out.println(field.getType().getSimpleName()+",");
Method[] method=field.getType().getDeclaredMethods();
for (Method method2 : method) {
System.out.print(method2.getName()+",");
System.out.println(Modifier.toString(method2.getModifiers())+",");
}
}
}
}
方法关键字 |
含义 |
getDeclaredMethods() |
获取所有的方法 |
getReturnType() |
获得方法的放回类型 |
getParameterTypes() |
获得方法的传入参数类型 |
getDeclaredMethod("方法名",参数类型.class,……) |
获得特定的方法 |
|
|
构造方法关键字 |
含义 |
getDeclaredConstructors() |
获取所有的构造方法 |
getDeclaredConstructor(参数类型.class,……) |
获取特定的构造方法 |
|
|
父类和父接口 |
含义 |
getSuperclass() |
获取某类的父类 |
getInterfaces() |
获取某类实现的接口 |
相关文章
- 暂无相关文章
用户点评