System.identityHashCode(Object obj)

本文介绍了Java中System类提供的identityHashCode()静态方法。该方法用于获取对象的唯一hashCode值,其返回值不受对象所在类是否重写hashCode()方法的影响。只有当两个对象引用相同,它们的identityHashCode值才会相等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

System提供的identityHashCode()静态方法用于获取某个对象唯一的hashCode值,这个identityHashCode()的返回值与该类是否重写了hashCode()方法无关,只有当两个对象相同时,它们的identityHashCode值才会相等。

// 递归回填翻译值 private void fillTranslations(Object obj, Map<String, Map<String, String>> allTranslations, Map<String, String> fieldMap, Set<Object> processedObjects) { if (obj == null || processedObjects.contains(System.identityHashCode(obj))) { return; } processedObjects.add(System.identityHashCode(obj)); // 处理Map类型 if (obj instanceof Map) { Map<Object, Object> map = (Map<Object, Object>) obj; Map<Object, Object> translateMap= new HashMap<>(); for (Map.Entry<Object, Object> entry : map.entrySet()) { Object key = entry.getKey(); Object value = entry.getValue(); // 处理Map中的String键值 if (key instanceof String && value instanceof String) { String fieldName = (String) key; String strValue = (String) value; // 1. 优先使用配置的类型 if (fieldMap.containsKey(fieldName)) { String type = fieldMap.get(fieldName); Map<String, String> translations = allTranslations.get(type); if (translations != null) { String translated = translations.get(strValue); if (translated != null) { // entry.setValue(translated); translateMap.put(fieldName+"Name",translated) } } } // 2. 使用默认类型 // else { // Map<String, String> defaultTranslations = allTranslations.get("default"); // if (defaultTranslations != null) { // String translated = defaultTranslations.get(strValue); // if (translated != null) { // entry.setValue(translated); // } // } // } } // 递归处理嵌套对象 else if (value != null) { fillTranslations(value, allTranslations, fieldMap, processedObjects); } } return; } // 处理POJO对象 Class<?> clazz = obj.getClass(); for (Field field : getAllFields(clazz)) { field.setAccessible(true); try { Object value = field.get(obj); if (value == null) continue; String fieldName = field.getName(); TranslateField annotation = field.getAnnotation(TranslateField.class); // 回填逻辑 if (value instanceof String) { String strValue = (String) value; if (annotation != null) { String targetFieldName = annotation.value().isEmpty() ? sourceField.getName() + annotation.targetField() : annotation.value(); Field targetField = findField(target.getClass(), targetFieldName); if (targetField != null) { targetField.setAccessible(true); targetField.set(target, translation); } else if (annotation.autoCreate()) { addDynamicField(target, targetFieldName, translation); } // 注解字段回填 String type = annotation.type(); Map<String, String> translations = allTranslations.get(type); if (translations != null) { String translated = translations.get(strValue); if (translated != null) { field.set(obj, translated); } } } // else if (fieldMap.containsKey(fieldName)) { // // 配置字段回填 // String type = fieldMap.get(fieldName); // Map<String, String> translations = allTranslations.get(type); // if (translations != null) { // String translated = translations.get(strValue); // if (translated != null) { // field.set(obj, translated); // } // } // } // else { // // 普通String字段回填 // Map<String, String> defaultTranslations = allTranslations.get("default"); // if (defaultTranslations != null) { // String translated = defaultTranslations.get(strValue); // if (translated != null) { // field.set(obj, translated); // } // } // } } // 递归处理嵌套对象 if (isSimpleType(value)) { fillTranslations(value, allTranslations, fieldMap, processedObjects); } } catch (IllegalAccessException e) { // 异常处理 } } } 优化 注解有赋值字段名 有就判断赋值字段存不存在,不存在新增,新增一个字段+后缀Name,存在就直接赋值,没有注解,就使用源字段+后缀Name,还需判断赋值字段存不存在,不存在新增
最新发布
07-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值