Commit 8d7a06172a7aba4332aa64b16bda3a9b083f932e
1 parent
cced7bb8
Exists in
master
1.fix a bug about final field
Showing
2 changed files
with
38 additions
and
4 deletions
Show diff stats
build.gradle
| @@ -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 |