日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java反射,泛型在Json中的運用

瀏覽:17日期:2022-08-19 11:12:09

最近項目中遇到了Json數據自動獲取的功能,不然令人想起java的反射,已經很長時間沒復習java了正好一塊連java的這一塊內容一起過一遍。java中的反射無疑就相當于java開發者的春天,在眾多的框架中也能看到它的身影,可以在運行時檢查類,接口、變量和方法等信息,可以實例化調用方法以及設置變量值等。本文主要以代碼的形式直接將反射,泛型的運用展現出來。

java中的反射

首先新建一個基礎類Author。

package bean;/** * * @author Super~me * Description: 基礎類 * */public class Author {private static String TAG='Big';private String name;private int age;public Author(){}public Author(String name, int age) {super();this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String toString() {return 'Author [name=' + name + ', age=' + age + ']';}private String pMethod(String t){String result=t+' Private Method';return result;}}

然后新建一個反射類,運用反射方法對上面的類進行訪問.包括對私有方法的訪問,對私有屬性的訪問等。其中常用的一些方法以及解釋:

Java反射,泛型在Json中的運用

//對象的創建public static void reflectNewInstance(){try {Class<?> authorclass=Class.forName(path_reflectfrom);Object object =authorclass.newInstance();Author author=(Author) object;author.setName('周大亨');author.setAge(89);System.out.println('author: '+author.toString());} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InstantiationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//對私有的方法進行反射public static void reflectPrivateConstructor(){try {Class<?> authorclass =Class.forName(path_reflectfrom);Constructor<?> declaredConstructor =authorclass.getDeclaredConstructor(String.class,int.class);declaredConstructor.setAccessible(true);Object object=declaredConstructor.newInstance('lida',88);Author author=(Author) object;System.out.println( 'Author: '+author.toString());} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (NoSuchMethodException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InstantiationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InvocationTargetException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//反射私有的屬性public static void reflectPrivateField(){try {Class<?> authorclass =Class.forName(path_reflectfrom);Object authorobject=authorclass.newInstance();Field field=authorclass.getDeclaredField('TAG');field.setAccessible(true);String tag=(String)field.get(authorobject);System.out.println( 'private field Tag:'+tag);} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InstantiationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (NoSuchFieldException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//反射獲取私有的方法private static void reflectMethod(){try {Class<?> authorclass=Class.forName(path_reflectfrom);Object authorobject=authorclass.newInstance();Method authormethod=authorclass.getDeclaredMethod('pMethod', String.class);authormethod.setAccessible(true);String string=(String)authormethod.invoke(authorobject, TAG);System.out.println( 'private Method: '+string);} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InstantiationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (NoSuchMethodException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InvocationTargetException e) {// TODO Auto-generated catch blocke.printStackTrace();}}

通過控制臺打印以上信息:查看運用結果

ReflectClass.reflectNewInstance();ReflectClass.reflectPrivateField();ReflectClass.reflectPrivateConstructor();ReflectClass.reflectMethod();

運行結果:

Java反射,泛型在Json中的運用

泛型的運用

對于泛型其實很好理解,通俗點講就是我們將類型也當成了參數進行傳值,這樣做代碼的安全性很大的被提升了,也為較大的優化帶來可能。泛型可以使編譯器知道一個對象的限定類型是什么,這樣編譯器就可以在一個高的程度上驗證這個類型消除了強制類型轉換 使得代碼可讀性好,減少了很多出錯的機會。但是也要記住泛型的規范,比如靜態的變量和方法不能引用泛型變量,我們也不能利用instanceof等方法對泛型的類型進行判斷,當然這樣做也毫無意義,重要的一點是泛型類不能繼承Exception或者Throwable。泛型的繼承中,不論子類是否為泛型類,所繼承和實現的父類接口都需要被指定。常用的泛型類型變量:E:元素(Element)K:關鍵字(Key)N:數字(Number)T:類型(Type)V:值(Value)另外泛型界定的概念主要是指對泛型類型進行一個限定。比如:

public static <T extends String> T add(T str1, T str2) { return '';}

利用泛型和反射實現對json數據的保存

//利用反射獲取json數據到java類 private static void getJson(){ try { String json = '{'name':'Miss王','age':79}'; JSONObject source=JSONObject.parseObject(json); Class<?> aClass = Class.forName('bean.Author'); Object obj = aClass.newInstance(); Field[] declaredFields = aClass.getDeclaredFields(); for (Field field : declaredFields) {field.setAccessible(true);System.out.println(source.getString(field.getName()));if (field.getGenericType().toString().equals(String.class.toString())) { field.set(obj, source.getString(field.getName()));} else if (field.getGenericType().toString().equals(int.class.toString())) { field.set(obj, source.getInteger(field.getName()));} } Author author = (Author) obj; System.out.print(author); } catch (Exception e) { e.printStackTrace(); } }

我們想把以上的實現封裝起來,這時就用了泛型。

//泛型+反射實現json數據讀取到java類 public static <T> T getJsonClass(String json, Class<T> beanclass) { try { JSONObject jsonObject = JSONObject.parseObject(json); Object obj = beanclass.newInstance(); //拿到所以元素 Field[] declaredFields = beanclass.getDeclaredFields(); for (Field field : declaredFields) {field.setAccessible(true); if (field.getGenericType().toString().equals(String.class.toString())) {String value=jsonObject.getString(field.getName()); if(value!=null){ field.set(obj,value); System.out.println(value); }} else if (field.getGenericType().toString().equals(int.class.toString())) { if(jsonObject.getInteger(field.getName())!=null) field.set(obj,jsonObject.getInteger(field.getName())); } } return (T) obj; } catch (Exception e) { e.printStackTrace(); } return null; }

調用實現:

public static void main(String[] args) {// TODO Auto-generated method stubString json = '{'name':'李先生','age':82}'; //ReflectJson.getJson();//解析json然后換成實體類Author author=getJsonClass(json, Author.class);System.out.print( author.toString());}

運行結果:

Java反射,泛型在Json中的運用

Java反射,泛型在Json中的運用

以上就是Java反射,泛型在Json中的運用的詳細內容,更多關于Java反射,泛型的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
成人台湾亚洲精品一区二区| 日本不卡视频在线| 亚洲三级欧美| 婷婷中文字幕一区| 欧美成人一二区| 丝袜诱惑制服诱惑色一区在线观看| 日韩极品在线观看| 久久久久免费av| 18国产精品| 红桃视频国产一区| 精品美女久久| 亚洲精品影视| 在线精品小视频| 国产伦久视频在线观看| 亚洲精品乱码日韩| 欧美午夜不卡影院在线观看完整版免费| 麻豆视频久久| 欧美三级第一页| 日本vs亚洲vs韩国一区三区二区| aa亚洲婷婷| 免费精品视频| 夜夜嗨av一区二区三区网站四季av| 精品国产三区在线| 国产 日韩 欧美 综合 一区| 国产aⅴ精品一区二区三区久久| 国产精品一级在线观看| 热久久久久久久| 999精品一区| 久久久久久久久丰满| 欧美1区2区3区| 亚洲欧美激情诱惑| 亚洲免费观看高清完整版在线观| 欧美日韩激情在线一区二区三区| 婷婷亚洲综合| 日本麻豆一区二区三区视频| 日韩高清不卡一区| 成人在线超碰| 欧美精品激情| 日韩av中文字幕一区二区| 国产高清精品二区| 亚洲性色av| 午夜久久tv| 亚洲精品进入| 91亚洲国产| 免费在线观看日韩欧美| 精品亚洲成人| 免费人成黄页网站在线一区二区| 国产精品一区二区免费福利视频| 天堂8中文在线最新版在线| 午夜日本精品| 麻豆视频观看网址久久| 国产精品呻吟| 国产精品二区不卡| 蜜桃视频在线观看一区二区| 精品国内亚洲2022精品成人 | 国产成人精品一区二区免费看京 | 欧美激情福利| 99国产成+人+综合+亚洲欧美| 国产午夜一区| 爽好多水快深点欧美视频| 免费在线日韩av| 美国欧美日韩国产在线播放| www.com.cn成人| 国产精品一线天粉嫩av| 另类专区亚洲| 国产乱子精品一区二区在线观看 | 欧美综合社区国产| 日韩在线观看| 国产精品毛片久久久| 国产婷婷精品| 亚洲电影有码| 亚洲1234区| 欧美自拍一区| 日本伊人久久| 水野朝阳av一区二区三区| 欧美成人高清| 99久久激情| 欧美日韩中文字幕一区二区三区| 91亚洲成人| 99成人在线视频| 欧美不卡高清| 视频一区欧美精品| 亚洲精品一级| 亚洲专区视频| 国产亚洲字幕| 精品国产美女a久久9999| 欧美成人aaa| 久久狠狠久久| 韩日一区二区| 欧美日韩国产一区二区三区不卡| 在线日韩欧美| 天使萌一区二区三区免费观看| 中文精品在线| 日韩视频一二区| 精品美女视频 | 91亚洲精品在看在线观看高清| 日韩精品国产精品| 久久久国产精品入口麻豆| 国产精品免费大片| 国产精品99一区二区三| 精品欧美一区二区三区在线观看| 欧美亚洲国产精品久久| 亚洲激情精品| 日韩国产欧美在线视频| 麻豆久久一区| 99久久精品费精品国产| 日韩精品视频网站| 高清av不卡| 国产日韩亚洲欧美精品| 99久久久久国产精品| 亚洲精品婷婷| 日韩不卡免费高清视频| 日韩不卡一区二区三区| 蜜桃久久久久| 老色鬼久久亚洲一区二区| 精品国产不卡一区二区| 在线视频亚洲欧美中文| 麻豆视频久久| 亚洲人成亚洲精品| 久久精品国产亚洲夜色av网站| 欧美性www| 天堂va蜜桃一区二区三区| 精品一区91| 国产伦精品一区二区三区视频 | 国产精品美女久久久| 国产 日韩 欧美 综合 一区| 日韩精品免费观看视频| 日韩影院在线观看| 成人免费电影网址| 久久天堂影院| 国产精品视频一区视频二区| 久久一二三区| 99香蕉国产精品偷在线观看| 久久婷婷亚洲| 在线日韩电影| 免费国产自线拍一欧美视频| 亚洲四虎影院| 亚洲性图久久| 久久久久久色| 好看不卡的中文字幕| 秋霞国产精品| 国产伊人精品| 三级在线观看一区二区| 视频一区国产视频| 欧美一区免费| 欧美xxxx中国| 欧美日韩国产一区二区三区不卡 | 国产精品午夜一区二区三区| 蜜臀国产一区二区三区在线播放| 在线视频观看日韩| 国产美女精品| 奇米狠狠一区二区三区| 国产精品xvideos88| 国产伦久视频在线观看| 欧美91精品| 青草综合视频| 欧美aa在线观看| 综合亚洲自拍| 精品一区二区三区中文字幕视频| 日产精品一区二区| 亚洲大全视频| 国产精品夜夜夜| 中文在线а√在线8| 欧美~级网站不卡| 日韩黄色av| 91成人精品视频| 你懂的国产精品永久在线| 欧美日韩一二三四| 欧美一区在线观看视频| 99久久亚洲精品蜜臀| **爰片久久毛片| 91成人精品| 国产中文欧美日韩在线| 视频一区中文字幕国产| 国产66精品| 国产欧美另类| 蜜臀av一区二区在线免费观看| 国产精品原创| 视频一区日韩| 亚洲欧洲一区| 9999国产精品| 欧美激情aⅴ一区二区三区| 亚洲欧美日本视频在线观看| 女生影院久久| 欧美好骚综合网| 久久精品国产99国产| 欧美日本二区| 亚洲精品美女| 青青草国产成人99久久| 久久亚洲美女| 国产精品色网| 欧美成人综合| 激情五月综合| 成人羞羞视频播放网站| 日本午夜精品视频在线观看| 婷婷亚洲成人| 欧美日韩亚洲一区三区| 97精品久久| 电影91久久久| 日韩欧美一区二区三区免费看|