JavaSE反射操作类

1 篇文章 0 订阅
1 篇文章 0 订阅

1、
获取一个Class对象
Class classas = Class.forName(“需要加载获取的类的路径”);
例如:

	Class classas = Class.forName("club.kang.blog.web.test.TestClassMy.Student");

2、
将这个类对象创建出来

        Object object = classas.newInstance();

3、然后我们对这个对象进行操作下面是各种操作
获取成员变量
例如:操作一个叫name的公有属性:

		获取当前类模板的对象
		Class classas = Class.forName("club.kang.blog.web.test.TestClassMy.Student");
		创建一个classas类模板的对象,无参构造
		Object object = classas.newInstance();


		获取成员变量,设置变量名的名字
		Field field = classas.getField("name");
		获取一个field成员叫做name,从object中拿出来
		field .get(object);
		
		设置这个成员的name成员,值为MyName
		field.set(object,"MyName");

		获取这个成员的变量名
		field.getName()

		获取这个类的所有_公有_成员变量
		Field[] fields = classas .getFields();
		循环遍历他
		for(Field fu : fields){
			System.out.println("加载一个公有成员变量" + fu);
		}

		访问所有属性
		Field[] field = classas.getDeclaredFields();
		它可以加载所有的成员变量甚至可以设置私有变量,
		所以一般的开发中很少用到反射一般用作开发框架等,
		下面我们来设置私有变量
		只需要添加一个
		
            field.setAccessible(true);
         就可以给私有的成员设置值也是暴力破解私有的方法

下面我们来操作方法还是用那一个类对象
Method method = classas.getMethod(方法名,参数值对象类…);
参数值对象类是例如String类型的参数则是String.class
int对应int.Class

		 这里的返回值是方法的返回值,如果是void类型的则返回null
		 Object object2 = method .invoke(object,参数.......);
		
		然后我们来返回所有公有的方法
		Method[] methods = classas.getMethods();
		查询所有方法
		classas.getDeclaredMethods();
		私有的方法也能调用
		 Method.setAccessible(true);
		 然后直接调用他
		 Object object2 = method .invoke(object,参数.......);
		 剩下的基本都一样都是在中间加上
		getDeclaredField和getDeclaredMethods()
		getXxxxx后面操作获取的都是所有的
		也嫩返回getName等等

然后就是获取构造方法

		设置构造方法的参数格式
        Constructor constructor = classas.getConstructor(String.class, int.class, String.class);
     	将获取到的值赋给对象
        Object object = constructor.newInstance("MyName", 18, "男");
		就设置好了
		然后是查找他的父类和接口
		创建一个新的类模板,加载他的父类类模板
		Class cs = classas.getSuperclass();
		这是获取他的所有接口
        Class[] interfaces = classas.getInterfaces();

其实获取的方法都是一样的getXxxx然后是方法或者成员或者其他的setXXXX就是往里面设置加载
getName就是方法名,或者接口名,或者成员名
暴力破解private私有的都是field或者方法等加上.setAccessible(true);就可以了

    field.setAccessible(true);
    里面还有其他的很多东西可以慢慢了解哦
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值