999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于反射技術的高校體育測評系統優化實現研究

2021-10-23 10:21:14
體育科技文獻通報 2021年10期
關鍵詞:機制方法設計

戈 俊

1 研究目的

通過動態獲取類中成員的Java反射技術,從而提高并優化高校體育測評系統的功能。

2 研究方法

2.1 文獻資料法

根據研究內容和研究目的,查閱了近年來有關Java反射技術等方面的專著、期刊、論文和資料,并對資料進行整理分析、篩選、歸納、概括。為寫作提供依據,為后續研究提供了充足的理論支持。

2.2 實驗法

通過Eclipse集成開發軟件,建立JavaSE開源項目,通過創建包、接口、類、配置文件等方法,進行項目開發的基本配置,通過WindowBuilder插件,進行GUI可視化組件開發,結合Java反射技術對已存在的NJFU_PECS高校體育成績評測系統進行技術優化。

3 研究結果與分析

3.1 Java程序性能優化分析

前期為了滿足教學與訓練工作需求,已做好可以獨立運行的應用程序NJFU_PECS高校體育成績評測系統,可以正常安裝并使用。用戶在使用過程中需要提高該程序的擴展性,想加入一些自己所需的新功能。在程序開發初期,如果想添加新功能,其做法是定義一個類,并建立方法,通過new對象的方法,在主線程中調用該對象,并指揮對象調用功能方法即可。但是,現實生活中的應用程序是已經封裝好的程序,是不可以隨便將其源碼進行改變同時建立對象的,又何況很多的程序開發時并非開源程序,是無法獲取其程序源碼的。因此,這種提高程序擴展性的想法是錯誤的。在這種情況下,程序需要提高擴展性,往往在設計初期會對外提供一個便于后期擴展使用的接口,程序設計廠商對外暴露接口規則,二次開發時通過實現該接口規則,第三方通過使用符合該接口規則的對象。這種操作方式可以形象的比作計算機對外提供的USB接口,通過該接口可以實現與外部設備的互聯互通,如U盤、移動硬盤等。因此,對外提供接口只是為了進行功能擴展。

當需要進行功能擴展時,就應該針對接口的規則設計一個類,并通過該類實現接口,緊接著通過接口引用指向子類對象,以多態調用的形式即可使用擴展對象的方法。但是,回到原點還是之前的問題,如果無法在已寫好的程序中更改其代碼。那么,應該如何操作呢?新的思考方式是通過配置文件的方式,應用程序在啟動時可通過流對象直接讀取該配置文件,配置文件里配置的是即將使用到的擴展功能擴展類的類名,通過類名的讀取,即可找到該類對應的class字節碼文件。通過反射技術加載class字節碼文件,并能成功獲取該class字節碼文件中的所有內容,通過類中的構造函數可以進行對象的創建,并且調用類中定義好的功能。如果想要對指定名稱的字節碼文件進行加載并獲取其中的內容并調用,怎么可以實現?這就需要使用到反射技術。

3.2 Java程序基礎調用與反射機制對比分析

3.2.1 Java反射技術的原理分析

JAVA反射機制是在運行狀態中,對于任意一個類(class文件),都能夠知道這個類的所有屬性和方法,即反向的映射類中的所有內容,對于任意一個對象,都能夠調用它的任意一個方法和屬性,這種動態獲取的信息以及動態調用對象方法的功能稱為Java語言的反射機制,即動態獲取類中信息,就是Java反射[1]。通過反射技術與配置文件相關聯,運行配置文件中指定類的對應方法,讀取配置文件中的數據,通過反射技術,來完成指定對象的創建[2]。只要在代碼或配置文件中看到類的完整路徑(包、類),其底層原理基本上使用的就是Java的反射機制。

3.2.2 獲取任意類字節碼文件對象的方法分析

第一種方法:Object類中有一個方法叫做getClass(),該方法必須明確被操作的類[3]。通過對象引用創建對象后,通過變量名稱調用Object類中的可以被所有對象繼承的getClass()方法,同時用描述字節碼文件對象的類Class來接收該方法的返回值。

第二種方法:任何數據類型都具備一個靜態的屬性.class來獲取其對應的Class對象[3]。該方法直接用類名.class的形式即可得到該數據的字節碼文件對象,該方法的優點是簡單,但還是要明確用到類中的靜態成員,缺點是擴展性受限。

第三種方法:只要通過給定類的字符串名稱就可以獲取該類,描述字節碼文件的類是Class,因此我們可以用Class類中的方法完成,Class類被定義在java.lang包內,此方法更為擴展[3]。該類中定義了一個靜態方法forName(),該方法返回與帶有給定字符串名的類或接口相關聯的Class對象,該方法在定義時拋了一個ClassNotFoundException類未找到異常,因此值得注意的是該forName方法的參數字符串類名應該填寫正確,并要求填寫全類名即包名加類名。這種方式只要有類的名稱即可,更為方便,擴展性更強。

3.2.3 常規創建對象和通過反射創建對象的區別

常規創建對象,通過包名加類名的方式,創建類所對應的實體對象,這樣new對象后,就要在classpath路徑內尋找名為包名加類名的字節碼文件,并將其加載進內存,同時在堆內存中開辟一片空間。

通過反射創建對象,初期筆者手上只有字符串的類名,但是也想完成創建對象的動作。創建對象的基本原則是通過指定類名稱,到指定位置找到字節碼文件,加載進內存并在堆內存中開辟空間[4]。該步驟可通過Class.forName(“字符串包名+類名”)方法進行實現。反射機制作用下,獲取其對象的方法是通過Class類中定義的方法newInstance()方法實現的,該方法可創建此Class對象所表示的類的一個新實例[4]。同時該實例返回值是Object,因為Object可接受任意對象。

兩者創建實例的區別在于,傳統創建需要程序員根據使用對象的不同,反復在程序中創建不同的對象,擴展性極弱,若對象眾多,暫時無需使用到的對象也必須提前創建出來,極其浪費內存。而通過反射機制,可以將日后可能被使用到的對象類名寫入配置文件中,需要用時讓程序自身自動通過反射機制讀取配置文件,逐個加載即可,提高擴展性的同時降低了內存的消耗。

3.3 高校體育評測系統反射設計思路與開發步驟分析

3.3.1 可視化界面設計思路分析

由于該系統的主要功能是提供用戶進行高校體育成績測試結果與評分的換算,因此開發前期首先要進行評測系統的GUI即可視化界面設計。按照普通設計思路,每一個測試項目的換算都需要獨立設計一個測試類,也可以獨立設計成一個測試換算系統,這樣做的缺點是用戶在同時錄入多個測試項目時,需要頻繁的啟動并關閉不同的測評系統,浪費了大量的時間。而此系統在設計初期考慮到了使用反射機制來優化系統功能,因此在GUI界面設計時,可以通過設計下拉菜單的方式,靈活方便的轉換體育評測項目,優勢是不用關閉系統即可實現體育評測項目的切換,而該設計的技術基礎就是使用Java的反射機制完成。

3.3.2 接口與實現類的設計思路分析

設計初期,由于該系統是保障數據換算結果的輸出,那么此項目設計思路是首先定義一個測試接口,該接口中的抽象方法需要接受一個測試者測試項目的結果,由于不同項目的測試結果數據類型不同。如,50米跑、800米跑、立定跳遠等測試結果數據類型均是浮點型;而仰臥起坐、引體向上等測試結果數據類型又都是整數類型,為了統一方便,筆者將該方法接收的參數類型均設計成雙精度的浮點類型double。而該方法的轉換測試必然會有一個結果,那么該方法的返回值類型也設計成雙精度的double類型,該方法的方法名稱就直截了當地設計成test,以便于體現方法的見名知意。

緊接著,需要設計每一個運動項目的測試類,他們的共性特點都是測試,因此都需要實現之前設計的接口,并覆蓋掉接口中的抽象方法,只有覆蓋掉接口中的抽象方法,并完成方法體中具體測試方法的設計,才能使用該方法。

3.3.3 配置文件的創建步驟分析

實現接口后的測試類定義完畢以后,筆者在該項目中創建一個配置文件test.properties,該配置文件的建立以便于后期通過反射機制找到該配置文件,并找尋配置文件中所需要運行的類文件的名稱。下一步,將所有測試類的全類名即包名+類名通過鍵值對的形式寫入配置文件。創建反射機制關聯的配置文件test.properties如圖一所示:

圖一 創建反射機制關聯的配置文件test.properties

3.3.4 反射機制的實現步驟分析

下面筆者就要開始進行反射機制的代碼實現,首先需要通過緩沖字符輸入流BufferedReader關聯配置文件test.properties。通過循環讀取,將配置文件中的所有鍵值對信息讀取進來,通過字符串的切割方法將鍵值對通過“=”切成字符串數組,通過下拉菜單的選定測試項目類別與該字符串鍵值進行equals比對,如果比對成功,那么該鍵值對的值就是需要測試的項目類的類名,順利獲取該類名。流對象關聯配置文件切割并校對鍵值對如圖二所示:

圖二 流對象關聯配置文件切割并校對鍵值對

通過Class.forName()方法,將上述獲取的類名作為參數傳遞給該方法,得到該類所對應的字節碼文件對象。AccessibleObject類是Field字段、Method方法和Constructor構造方法對象的基類[5]。它提供了將反射的對象標記為在使用時取消默認Java語言訪問控制檢查的能力[6]。通過該對象調用getMethod()方法,同時將測試方法名稱“test “和該方法所需的參數類型的一個靜態屬性.class來獲取其對應的Class對象,再通過之前字節碼文件對象調用newInstance()方法,創建測試類實例對象,最后通過方法類的invoke()方法將對象實例和文本框中獲取的測試數據傳遞給該方法參數,最后得到測試類轉換的分值。再通過文本域將轉換后的分值通過字符串表現在文本域中。反射機制完成對象建立并調用方法進行成績換算如圖三所示:

圖三 反射機制完成對象建立并調用方法進行成績換算

4 結論與建議

4.1 結論

前期開發的NJFU_PECS高校體育成績評測系統過于臃腫,代碼量過于冗長[7][8]。反射機制在本系統性能優化中使代碼更加靈活,更加容易實現面向對象,大大地提高了程序的擴展性,實際優勢表現為在不關閉系統前提下實現體育評測項目的切換;面向配置文件,降低了用戶和開發者理解程序代碼及執行流程的難度。

4.2 建議

為了提高程序的可擴展性,反射機制是程序開發的普遍設計趨勢和方向;為了更具體的描述配置文件中的信息,后期可使用XML結構性的標記語言進行數據的描述與封裝,再使用dom4j解析XML文檔更利于維護。

猜你喜歡
機制方法設計
自制力是一種很好的篩選機制
文苑(2018年21期)2018-11-09 01:23:06
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
破除舊機制要分步推進
中國衛生(2015年9期)2015-11-10 03:11:12
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
捕魚
注重機制的相互配合
中國衛生(2014年3期)2014-11-12 13:18:12
打基礎 抓機制 顯成效
中國火炬(2014年4期)2014-07-24 14:22:19
主站蜘蛛池模板: 尤物国产在线| 久久免费视频6| 国产精品成人一区二区不卡| 国产综合无码一区二区色蜜蜜| 日韩大片免费观看视频播放| 久久男人视频| 色噜噜综合网| 国产精品精品视频| 亚洲av无码片一区二区三区| 精品国产美女福到在线不卡f| 在线精品亚洲一区二区古装| 亚洲欧洲日产国产无码AV| 成人免费黄色小视频| 国产亚洲欧美在线专区| 国产精品夜夜嗨视频免费视频| 日本人妻一区二区三区不卡影院 | 日韩在线第三页| 成人亚洲天堂| 天堂成人在线| 日韩性网站| 亚洲区一区| 国产精品美女网站| 亚洲第一色网站| 中国成人在线视频| 亚洲欧美不卡视频| 中文精品久久久久国产网址| 久久伊人操| 欧美狠狠干| 久久精品人妻中文系列| 国产精品漂亮美女在线观看| 日韩黄色精品| 国产微拍精品| a级毛片免费网站| 国产高清国内精品福利| 日韩精品无码免费一区二区三区| 亚洲成人播放| 中文字幕啪啪| 91精品免费久久久| 性视频一区| 色AV色 综合网站| 伊人狠狠丁香婷婷综合色| 欧美日韩在线观看一区二区三区| 99视频免费观看| 欧美天天干| 五月天久久婷婷| 国产办公室秘书无码精品| 免费在线看黄网址| 成人亚洲国产| 91午夜福利在线观看| 精品国产成人三级在线观看| 高清无码一本到东京热| 久久久久九九精品影院 | 国产精品污视频| 日韩在线永久免费播放| 亚洲熟妇AV日韩熟妇在线| 国产啪在线| 黄色在线网| 国产精品久久久久久久久kt| 国产成人综合日韩精品无码首页 | 久久久91人妻无码精品蜜桃HD| 8090午夜无码专区| jizz在线观看| 成人国产免费| 免费一级α片在线观看| 无码aⅴ精品一区二区三区| 精品国产美女福到在线直播| 四虎影视永久在线精品| 日韩精品成人在线| 国产91小视频在线观看| 国产极品美女在线| 天天躁夜夜躁狠狠躁躁88| 99尹人香蕉国产免费天天拍| 国产一在线| 在线无码私拍| 麻豆国产原创视频在线播放| 夜夜拍夜夜爽| 色综合天天娱乐综合网| 在线无码九区| 国产欧美视频综合二区| 亚洲精品免费网站| 亚洲天堂网站在线| 一级片免费网站|