オブジェクトの地図と公州を変換します

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 }
コードの表示

 

おすすめ

転載: www.cnblogs.com/xiatc/p/12362855.html