1 パッケージczc.superzig.modular.utils。 2 3 インポートをjava.lang.reflect.Field。 4 インポートたjava.util.HashMap。 5 インポートjava.util.Map; 6 インポートjava.util.regex.Matcher。 7 インポートjava.util.regex.Patternの。 8 9 / ** 对象转地図工具类 10 * <B> 11 * </ b>の<BR> <BR> <私>説明</ I>: 12 * <BR> <BR>日:6分の2019 / 18 $ {時間} <BR>著者:DXL 13 * / 14 パブリック クラスObjToMap { 15 プライベート 静的=ラインパターンPattern.compileパターン( "_(\\ W)"の); 16 プライベート 静的 Pattern.compile humpPattern =( "[AZ]"のパターン) 。17 18れる / ** 。19 * <B>オブジェクトマップ 20 * @ 5月1日午前2時53分33秒<BR> <私>著者</ I>の日2019インディアン7午後:DXL 21 * / 22 パブリック 静的地図<文字列、オブジェクト> modelToMap(オブジェクトobj){ 23 24 地図<文字列、オブジェクト> =地図新しい新しいハッシュマップの<string、オブジェクト> (); 25 // すべてのドメインは、オブジェクト・クラスに対応するfを取得し 26である フィールド、[] =フィールドobj.getClassを()。 getDeclaredFields();27 のために(INT I = 0、LEN = fields.length; I <LEN; I ++ ){ 28 列VARNAME = 項目[I] .getName(); 29 IF( "serialVersionUIDの" .equals(VARNAME)){ 30が 続行; 31 } 32 // 小文字を設定するキーは、オブジェクトのデフォルトプロパティ 33が VARNAME = humpToLine(VARNAME).toString(); 34が 試み{ 35の // 取得元のアクセス制御特権 36 ブール accessFlag = 項目[I] .isAccessible (); 37 // アクセス制御特権修正 38 フィールド[I](.setAccessible 真の); 39 // 変数オブジェクトに対応する属性フィールド[I]でオブジェクトfを取得する 40 のオブジェクトO = フィールド[I]に.get(OBJ); 41は IF!(= O はnull ){ 42は map.put(VARNAME、O);} 43は、 // するSystem.out.println( "次のように入ってくるオブジェクトは変数が含まれています" + VARNAME + "=" + O)を、 44である //はアクセスを復元します制御権限 45の 項目[I] .setAccessible(accessFlag); 46れる } キャッチ(EXはIllegalArgumentException){ 47 ex.printStackTrace(); 48 }キャッチ(IllegalAccessExceptionがEX){ 49 ex.printStackTrace(); 50 } 51 } 52 リターンマップ。 53 } 54 / ** 下划线转驼峰* / 55 パブリック 静的文字列lineToHump(文字列str){ 56 STR = str.toLowerCase()。 57 マッチャーマッチャー= linePattern.matcher(STR)。 58 StringBufferのSB = 新規のStringBuffer(); 59 一方(matcher.find()){ 60 matcher.appendReplacement(SB、Matcher.group(1 ).toUpperCase()); 61である } 62で matcher.appendTail(SB) 63は、 リターンsb.toString(); 64 } 65 / ** 上記よりハンプ下線付きターン、高効率* / 66 パブリック 静的文字列humpToLine(文字列STR){ 67 マッチャマッチャ= humpPattern.matcher(STR)は、 68 のStringBuffer SBは= 新しい新;たStringBuffer() 69 一方(matcher.find()){ 70 」、matcher.appendReplacement(SBを_「+ Matcher.group(0 ).toLowerCase())。 71 } 72 matcher.appendTail(SB)。 73 リターンsb.toString()。 74 } 75 }