Commit 8d7a06172a7aba4332aa64b16bda3a9b083f932e

Authored by 王彬
1 parent cced7bb8
Exists in master

1.fix a bug about final field

@@ -54,7 +54,7 @@ uploadArchives { @@ -54,7 +54,7 @@ uploadArchives {
54 authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD) 54 authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
55 } 55 }
56 pom.project { 56 pom.project {
57 - version '1.1.4' 57 + version '1.1.5'
58 artifactId ARTIFACT_Id 58 artifactId ARTIFACT_Id
59 groupId GROUP_ID 59 groupId GROUP_ID
60 packaging TYPE 60 packaging TYPE
src/main/java/com/taover/util/UtilObject.java
1 package com.taover.util; 1 package com.taover.util;
2 2
3 import java.lang.reflect.Field; 3 import java.lang.reflect.Field;
  4 +import java.lang.reflect.Modifier;
4 import java.util.ArrayList; 5 import java.util.ArrayList;
5 import java.util.Iterator; 6 import java.util.Iterator;
6 import java.util.List; 7 import java.util.List;
@@ -81,6 +82,11 @@ public class UtilObject { @@ -81,6 +82,11 @@ public class UtilObject {
81 if(nameIndex == -1){ 82 if(nameIndex == -1){
82 continue; 83 continue;
83 }else{ 84 }else{
  85 + //如果是final关键词修饰,则返回
  86 + if(Modifier.isFinal(destField[nameIndex].getModifiers())){
  87 + continue;
  88 + }
  89 +
84 //如果源field与目标field数据类型相同,则将sourceFieldValue赋值给目标对象 90 //如果源field与目标field数据类型相同,则将sourceFieldValue赋值给目标对象
85 if(sourceFieldType.equals(destFieldTypeArray[nameIndex])){ 91 if(sourceFieldType.equals(destFieldTypeArray[nameIndex])){
86 destField[nameIndex].setAccessible(true); 92 destField[nameIndex].setAccessible(true);
@@ -159,6 +165,11 @@ public class UtilObject { @@ -159,6 +165,11 @@ public class UtilObject {
159 if(nameIndex == -1){ 165 if(nameIndex == -1){
160 continue; 166 continue;
161 }else{ 167 }else{
  168 + //如果是final关键词修饰,则返回
  169 + if(Modifier.isFinal(destField[nameIndex].getModifiers())){
  170 + continue;
  171 + }
  172 +
162 //如果源field与目标field数据类型相同,则将sourceFieldValue赋值给目标对象 173 //如果源field与目标field数据类型相同,则将sourceFieldValue赋值给目标对象
163 if(sourceFieldType.equals(destFieldTypeArray[nameIndex])){ 174 if(sourceFieldType.equals(destFieldTypeArray[nameIndex])){
164 destField[nameIndex].setAccessible(true); 175 destField[nameIndex].setAccessible(true);
@@ -289,6 +300,12 @@ public class UtilObject { @@ -289,6 +300,12 @@ public class UtilObject {
289 300
290 Field keyField = beanClass.getDeclaredField(camelName); 301 Field keyField = beanClass.getDeclaredField(camelName);
291 String keyTypeName = keyField.getType().getSimpleName(); 302 String keyTypeName = keyField.getType().getSimpleName();
  303 +
  304 + //如果是final关键词修饰,则返回
  305 + if(Modifier.isFinal(keyField.getModifiers())){
  306 + continue;
  307 + }
  308 +
292 if(keyTypeName.equals("String")){ 309 if(keyTypeName.equals("String")){
293 keyField.set(result, keyValue.toString()); 310 keyField.set(result, keyValue.toString());
294 }else if(keyTypeName.equals("Integer")){ 311 }else if(keyTypeName.equals("Integer")){
@@ -315,6 +332,12 @@ public class UtilObject { @@ -315,6 +332,12 @@ public class UtilObject {
315 332
316 try { 333 try {
317 Field keyField = beanClass.getDeclaredField(camelName); 334 Field keyField = beanClass.getDeclaredField(camelName);
  335 +
  336 + //如果是final关键词修饰,则返回
  337 + if(Modifier.isFinal(keyField.getModifiers())){
  338 + continue;
  339 + }
  340 +
318 keyField.setAccessible(true); 341 keyField.setAccessible(true);
319 keyField.set(result, keyValue); 342 keyField.set(result, keyValue);
320 } catch (Exception e) { 343 } catch (Exception e) {
@@ -327,7 +350,7 @@ public class UtilObject { @@ -327,7 +350,7 @@ public class UtilObject {
327 public static void main(String args[]){ 350 public static void main(String args[]){
328 351
329 class Temp2{ 352 class Temp2{
330 - Integer a; 353 + final Integer a;
331 Integer c; 354 Integer c;
332 public Temp2(Integer a, Integer c){ 355 public Temp2(Integer a, Integer c){
333 this.a = a; 356 this.a = a;
@@ -357,7 +380,18 @@ public class UtilObject { @@ -357,7 +380,18 @@ public class UtilObject {
357 Temp temp3 = new Temp(5,6); 380 Temp temp3 = new Temp(5,6);
358 Temp2 temp4 = new Temp2(7,8); 381 Temp2 temp4 = new Temp2(7,8);
359 382
360 - fieldCopy(temp1, temp2, false, null,false); 383 + try {
  384 + Field a= temp4.getClass().getDeclaredField("a");
  385 + System.out.print(Modifier.isFinal(a.getModifiers()));
  386 + } catch (NoSuchFieldException e) {
  387 + // TODO Auto-generated catch block
  388 + e.printStackTrace();
  389 + } catch (SecurityException e) {
  390 + // TODO Auto-generated catch block
  391 + e.printStackTrace();
  392 + }
  393 +
  394 + /*fieldCopy(temp1, temp2, false, null,false);
361 System.out.println(temp1.toString()); 395 System.out.println(temp1.toString());
362 System.out.println(temp2.toString()); 396 System.out.println(temp2.toString());
363 397
@@ -368,6 +402,6 @@ public class UtilObject { @@ -368,6 +402,6 @@ public class UtilObject {
368 List<Object[]> temp = UtilObject.fieldToArray(temp1, false, new String[]{"b"}); 402 List<Object[]> temp = UtilObject.fieldToArray(temp1, false, new String[]{"b"});
369 for(int i=0; i<temp.size(); ++i){ 403 for(int i=0; i<temp.size(); ++i){
370 System.out.println(temp.get(i)[0]+":"+temp.get(i)[1]); 404 System.out.println(temp.get(i)[0]+":"+temp.get(i)[1]);
371 - } 405 + } */
372 } 406 }
373 } 407 }
374 \ No newline at end of file 408 \ No newline at end of file