面试反射相关知识点及反射应用场景之一

反射的概述

要想理解反射的原理,首先要了解什么是类型信息。Java让我们在运行时识别对象和类的信息,主要有2种方式:一种是传统的RTTI,它假定我们在编译时已经知道了所有的类型信息;另一种是反射机制,它允许我们在运行时发现和使用类的信息。JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

反射的应用场景:

通过反射来给对象赋值,把Map或request里面的对象取出来赋给对象,就省下10来个set或get了

   @Test
public void test1() throws Exception{
	        
		   	User p = new User();
	        Method methods[] = p.getClass().getMethods();
	        Map paramap=new HashMap<String, Object>();
	        paramap.put("Nickname", "123");
	        for(int i=0;i<methods.length;i++){
	        	String methodname=methods[i].getName();
	        	if(methodname.contains("set")){
	        		if(paramap.containsKey(getFirstCharacterToUpper(methodname))){
	        methods[i].invoke(p,paramap.get(methodname.substring(3,methodname.length())));   
	        		}
	        	}
	        }
	        System.out.println(p.getNickname());
	    }
	   private static String getFirstCharacterToUpper(String srcStr) {
		   String str1=srcStr.substring(3,srcStr.length());
		   return str1;
		}

 

当然在写的时候可以直接用标签@Valid,也不用用这个,如果两个bean相互赋值的话也可以直接用

BeanUtils.copyProperties(publishCube, cube);

 

总体还是感觉反射没啥子卵用,但是以前用反射做跟踪调试时用到过,导出文件过程中,用getclass确定这个对象是execle还是xml过就当这个吧

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值