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

基于反射技術的高校體育測評系統(tǒng)優(yōu)化實現研究

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

戈 俊

1 研究目的

通過動態(tài)獲取類中成員的Java反射技術,從而提高并優(yōu)化高校體育測評系統(tǒng)的功能。

2 研究方法

2.1 文獻資料法

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

2.2 實驗法

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

3 研究結果與分析

3.1 Java程序性能優(yōu)化分析

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

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

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

3.2.1 Java反射技術的原理分析

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

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

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

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

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

3.2.3 常規(guī)創(chuàng)建對象和通過反射創(chuàng)建對象的區(qū)別

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

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

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

3.3 高校體育評測系統(tǒng)反射設計思路與開發(fā)步驟分析

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

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

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

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

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

3.3.3 配置文件的創(chuàng)建步驟分析

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

圖一 創(chuàng)建反射機制關聯(lián)的配置文件test.properties

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

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

圖二 流對象關聯(lián)配置文件切割并校對鍵值對

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

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

4 結論與建議

4.1 結論

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

4.2 建議

為了提高程序的可擴展性,反射機制是程序開發(fā)的普遍設計趨勢和方向;為了更具體的描述配置文件中的信息,后期可使用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
破除舊機制要分步推進
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
捕魚
注重機制的相互配合
打基礎 抓機制 顯成效
中國火炬(2014年4期)2014-07-24 14:22:19
主站蜘蛛池模板: 欧美国产精品不卡在线观看| 欧美日韩国产系列在线观看| 亚洲AV一二三区无码AV蜜桃| 国产一二视频| 成人亚洲天堂| 91在线播放免费不卡无毒| 久久99热这里只有精品免费看| 福利视频久久| 亚洲丝袜第一页| 午夜无码一区二区三区在线app| 国产精品永久久久久| 婷婷开心中文字幕| 久久婷婷六月| 亚洲精品无码AⅤ片青青在线观看| 亚洲精品国产成人7777| 91精品亚洲| 激情无码视频在线看| 91黄视频在线观看| 一级毛片在线直接观看| 99久久亚洲精品影院| 久久亚洲高清国产| 综合久久五月天| 国产欧美另类| 国产美女无遮挡免费视频| 国产三级成人| 欧美福利在线播放| 欧美乱妇高清无乱码免费| 国产精品永久不卡免费视频| 国产一级裸网站| 永久免费av网站可以直接看的 | 91精品国产无线乱码在线| 国产极品美女在线播放| 精品无码一区二区在线观看| 最新无码专区超级碰碰碰| 亚洲,国产,日韩,综合一区| 欧美成人a∨视频免费观看| 国产电话自拍伊人| 国产在线自乱拍播放| 亚洲成人播放| 国产亚洲精品自在久久不卡| 99热这里只有免费国产精品 | 成人综合在线观看| 欧美一级专区免费大片| 国产第一色| 亚洲精品动漫在线观看| 日本精品一在线观看视频| 日韩小视频网站hq| 都市激情亚洲综合久久| 国产成人艳妇AA视频在线| 波多野结衣无码AV在线| a毛片免费观看| 好吊日免费视频| 日韩精品一区二区三区免费| 国产乱子伦一区二区=| 午夜精品久久久久久久无码软件| 萌白酱国产一区二区| 思思99热精品在线| 亚洲一级毛片| 国产主播福利在线观看| 一级毛片免费观看不卡视频| 久久中文字幕av不卡一区二区| www亚洲天堂| 亚洲中文字幕97久久精品少妇| 26uuu国产精品视频| 99伊人精品| 亚洲黄色成人| 五月六月伊人狠狠丁香网| 日韩精品无码免费一区二区三区| 国产精品人成在线播放| 99er精品视频| 好吊妞欧美视频免费| 国产成人AV男人的天堂| 在线精品视频成人网| 亚洲欧美日本国产综合在线| 日韩欧美国产三级| 无码久看视频| 一区二区影院| 午夜天堂视频| 亚洲欧美日韩综合二区三区| 999国产精品| 亚洲黄色高清| 亚洲高清无码久久久|