欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java反射技术,

来源: javaer 分享于  点击 26313 次 点评:269

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()

获取某类实现的接口

相关文章

    暂无相关文章
相关栏目:

用户点评