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 |