obj.getClass().getName()==String.class.getName()和obj.getClass==String.class的区别

obj.getClass().getName()==String.class.getName()都是获取的全限定类名进行比较。结果为true,

obj.getClass==String.class是进行class比较,记过也为true

如果将String换成其他类型有接口或者继承的话,结果就不一定了。

	@org.junit.Test
	public void testName5() throws Exception {
		String aString="666";
		String name = aString.getClass().getName();
		String name2 = String.class.getName();
		System.out.println(name);
		System.out.println(name2);
		System.out.println(name==name2);
		Class<? extends String> class1 = aString.getClass();
		System.out.println(class1);
		System.out.println(class1==String.class);
	}

打印结果:

java.lang.String
java.lang.String
true
class java.lang.String
true


如果是同一个ClassLodader结果是无误的。2种方式皆可

如果不同的ClassLodader就需要注意了。使用obj.getClass==String.class是正确的。如果使用obj.getClass().getName()==String.class.getName()就不一定会得到想要的结果

package com.bjsasc.finance.common.utils; import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Field; import java.util.HashMap; import java.util.Map; public class JavaBeanUtil { /** * * @param source 被复制的实体类对象 * @param to 复制完后的实体类对象 * @throws Exception */ public static void Copy(Object source, Object to) throws Exception { // 获取属性 BeanInfo sourceBean = Introspector.getBeanInfo(source.getClass(),java.lang.Object.class); PropertyDescriptor[] sourceProperty = sourceBean.getPropertyDescriptors(); BeanInfo destBean = Introspector.getBeanInfo(to.getClass(),java.lang.Object.class); PropertyDescriptor[] destProperty = destBean.getPropertyDescriptors(); try { for (int i = 0; i < sourceProperty.length; i++) { for (int j = 0; j < destProperty.length; j++) { if (sourceProperty[i].getName().equals(destProperty[j].getName())) { // 调用source的getter方法和dest的setter方法 destProperty[j].getWriteMethod().invoke(to,sourceProperty[i].getReadMethod().invoke(source)); break; } } } } catch (Exception e) { throw new Exception("属性复制失败:" + e.getMessage()); } } /** * Pojo -> Map<String, Object> * @param obj * @return * @throws Exception */ public static Map<String,Object> object2Map(Object obj)throws Exception{ Map<String,Object> map =new HashMap<>(); Field[] fields = obj.getClass().getDeclaredFields(); for(Field field:fields){ field.setAccessible(true); map.put(field.getName(), field.get(obj)); } return map; } } 帮我优化下这个代码,考虑对象中有对象和对象集合的情况
04-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值