Commit 8d7a06172a7aba4332aa64b16bda3a9b083f932e

Authored by 王彬
1 parent cced7bb8
Exists in master

1.fix a bug about final field

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