Java鍙嶅皠浠嬬粛
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java鍙嶅皠浠嬬粛相关的知识,希望对你有一定的参考价值。
鏍囩锛?a href='http://www.mamicode.com/so/1/%e6%96%b9%e5%bc%8f' title='鏂瑰紡'>鏂瑰紡
struct 瀹炵幇 璇█ ofo obj ble 鏁版嵁 杩愯涓€銆佸弽灏勭殑姒傝堪
JAVA鍙嶅皠鏈哄埗鏄湪杩愯鐘舵€佷腑锛屽浜庝换鎰忎竴涓被锛岄兘鑳藉鐭ラ亾杩欎釜绫荤殑鎵€鏈夊睘鎬у拰鏂规硶锛涘浜庝换鎰忎竴涓璞★紝閮借兘澶熻皟鐢ㄥ畠鐨勪换鎰忎竴涓柟娉曞拰灞炴€э紱杩欑鍔ㄦ€佽幏鍙栫殑淇℃伅浠ュ強鍔ㄦ€佽皟鐢ㄥ璞$殑鏂规硶鐨勫姛鑳界О涓簀ava璇█鐨勫弽灏勬満鍒躲€?br />瑕佹兂瑙e墫涓€涓被,蹇呴』鍏堣鑾峰彇鍒拌绫荤殑瀛楄妭鐮佹枃浠跺璞°€傝€岃В鍓栦娇鐢ㄧ殑灏辨槸Class绫讳腑鐨勬柟娉?鎵€浠ュ厛瑕佽幏鍙栧埌姣忎竴涓瓧鑺傜爜鏂囦欢瀵瑰簲鐨凜lass绫诲瀷鐨勫璞?
浠ヤ笂鐨勬€荤粨灏辨槸浠€涔堟槸鍙嶅皠
鍙嶅皠灏辨槸鎶妀ava绫讳腑鐨勫悇绉嶆垚鍒嗘槧灏勬垚涓€涓釜鐨凧ava瀵硅薄
渚嬪锛氫竴涓被鏈夛細鎴愬憳鍙橀噺銆佹柟娉曘€佹瀯閫犳柟娉曘€佸寘绛夌瓑淇℃伅锛屽埄鐢ㄥ弽灏勬妧鏈彲浠ュ涓€涓被杩涜瑙e墫锛屾妸涓釜缁勬垚閮ㄥ垎鏄犲皠鎴愪竴涓釜瀵硅薄銆傦紙鍏跺疄锛氫竴涓被涓繖浜涙垚鍛樻柟娉曘€佹瀯閫犳柟娉曘€佸湪鍔犲叆绫讳腑閮芥湁涓€涓被鏉ユ弿杩帮級
濡傚浘鏄被鐨勬甯稿姞杞借繃绋嬶細鍙嶅皠鐨勫師鐞嗗湪涓巆lass瀵硅薄銆?br />鐔熸倝涓€涓嬪姞杞界殑鏃跺€欙細Class瀵硅薄鐨勭敱鏉ユ槸灏哻lass鏂囦欢璇诲叆鍐呭瓨锛屽苟涓轰箣鍒涘缓涓€涓狢lass瀵硅薄銆?/p>
浜屻€?a id="cb_post_title_url" href="https://www.cnblogs.com/buoge/p/9285142.html" rel="nofollow">Java涓负浠€涔堥渶瑕佸弽灏勶紵鍙嶅皠瑕佽В鍐充粈涔堥棶棰橈紵
Java涓紪璇戠被鍨嬫湁涓ょ锛?/p>
- 闈欐€佺紪璇戯細鍦ㄧ紪璇戞椂纭畾绫诲瀷锛岀粦瀹氬璞″嵆閫氳繃銆?/li>
- 鍔ㄦ€佺紪璇戯細杩愯鏃剁‘瀹氱被鍨嬶紝缁戝畾瀵硅薄銆傚姩鎬佺紪璇戞渶澶ч檺搴﹀湴鍙戞尌浜咼ava鐨勭伒娲绘€э紝浣撶幇浜嗗鎬佺殑搴旂敤锛屽彲浠ュ噺浣庣被涔嬮棿鐨勮€﹀悎鎬с€?/li>
Java鍙嶅皠鏄疛ava琚涓哄姩鎬侊紙鎴栧噯鍔ㄦ€侊級璇█鐨勪竴涓叧閿€ц川銆傝繖涓満鍒跺厑璁哥▼搴忓湪杩愯鏃堕€忚繃Reflection APIs鍙栧緱浠讳綍涓€涓凡鐭ュ悕绉扮殑class鐨勫唴閮ㄤ俊鎭紝鍖呮嫭鍏秏odifiers锛堣濡俻ublic銆乻tatic绛夛級銆乻uperclass锛堜緥濡侽bject锛夈€佸疄鐜颁箣interfaces锛堜緥濡侰loneable锛夛紝涔熷寘鎷琭ields鍜宮ethods鐨勬墍鏈変俊鎭紝骞跺彲浜庤繍琛屾椂鏀瑰彉fields鍐呭鎴栧敜璧穖ethods銆?/p>
Reflection鍙互鍦ㄨ繍琛屾椂鍔犺浇銆佹帰鐭ャ€佷娇鐢ㄧ紪璇戞湡闂村畬鍏ㄦ湭鐭ョ殑classes銆傚嵆Java绋嬪簭鍙互鍔犺浇涓€涓繍琛屾椂鎵嶅緱鐭ュ悕绉扮殑class锛岃幏鍙栧叾瀹屾暣鏋勯€狅紝骞剁敓鎴愬叾瀵硅薄瀹炰綋銆佹垨瀵瑰叾fields璁惧€笺€佹垨鍞よ捣鍏秏ethods銆?/p>
鍙嶅皠锛坮eflection锛夊厑璁搁潤鎬佽瑷€鍦ㄨ繍琛屾椂锛坮untime锛夋鏌ャ€佷慨鏀圭▼搴忕殑缁撴瀯涓庤涓恒€?br />鍦ㄩ潤鎬佽瑷€涓紝浣跨敤涓€涓彉閲忔椂锛屽繀椤荤煡閬撳畠鐨勭被鍨嬨€傚湪Java涓紝鍙橀噺鐨勭被鍨嬩俊鎭湪缂栬瘧鏃堕兘淇濆瓨鍒颁簡class鏂囦欢涓紝杩欐牱鍦ㄨ繍琛屾椂鎵嶈兘淇濊瘉鍑嗙‘鏃犺锛涙崲鍙ヨ瘽璇达紝绋嬪簭鍦ㄨ繍琛屾椂鐨勮涓洪兘鏄浐瀹氱殑銆傚鏋滄兂鍦ㄨ繍琛屾椂鏀瑰彉锛屽氨闇€瑕佸弽灏勮繖涓滆タ浜嗐€?/p>
瀹炵幇Java鍙嶅皠鏈哄埗鐨勭被閮戒綅浜巎ava.lang.reflect鍖呬腑锛?/p>
- Class绫伙細浠h〃涓€涓被
- Field绫伙細浠h〃绫荤殑鎴愬憳鍙橀噺锛堢被鐨勫睘鎬э級
- Method绫伙細浠h〃绫荤殑鏂规硶
- Constructor绫伙細浠h〃绫荤殑鏋勯€犳柟娉?/li>
- Array绫伙細鎻愪緵浜嗗姩鎬佸垱寤烘暟缁勶紝浠ュ強璁块棶鏁扮粍鐨勫厓绱犵殑闈欐€佹柟娉?/li>
涓€鍙ヨ瘽姒傛嫭灏辨槸浣跨敤鍙嶅皠鍙互璧嬩簣jvm鍔ㄦ€佺紪璇戠殑鑳藉姏锛屽惁鍒欑被鐨勫厓鏁版嵁淇℃伅鍙兘鐢ㄩ潤鎬佺紪璇戠殑鏂瑰紡瀹炵幇锛屼緥濡傜儹鍔犺浇锛孴omcat鐨刢lassloader绛夌瓑閮芥病娉曟敮鎸併€?/p>
涓夈€佷娇鐢?/h3>
1銆佽幏鍙朇lass瀵硅薄鐨勪笁绉嶆柟寮?/p>
1.1 Object ——> getClass();
1.2 浠讳綍鏁版嵁绫诲瀷锛堝寘鎷熀鏈暟鎹被鍨嬶級閮芥湁涓€涓?ldquo;闈欐€?rdquo;鐨刢lass灞炴€?br />1.3 閫氳繃Class绫荤殑闈欐€佹柟娉曪細forName锛圫tring className锛?甯哥敤)
/** * 鑾峰彇Class瀵硅薄鐨勪笁绉嶆柟寮? * 1 Object ——> getClass(); * 2 浠讳綍鏁版嵁绫诲瀷锛堝寘鎷熀鏈暟鎹被鍨嬶級閮芥湁涓€涓?ldquo;闈欐€?rdquo;鐨刢lass灞炴€? * 3 閫氳繃Class绫荤殑闈欐€佹柟娉曪細forName锛圫tring className锛?甯哥敤) * */ public class Fanshe { public static void main(String[] args) { //绗竴绉嶆柟寮忚幏鍙朇lass瀵硅薄 Student stu1 = new Student();//杩欎竴new 浜х敓涓€涓猄tudent瀵硅薄锛屼竴涓狢lass瀵硅薄銆?/span> Class stuClass = stu1.getClass();//鑾峰彇Class瀵硅薄 System.out.println(stuClass.getName()); //绗簩绉嶆柟寮忚幏鍙朇lass瀵硅薄 Class stuClass2 = Student.class; System.out.println(stuClass == stuClass2); //鍒ゆ柇绗竴绉嶆柟寮忚幏鍙栫殑Class瀵硅薄鍜岀浜岀鏂瑰紡鑾峰彇鐨勬槸鍚︽槸鍚屼竴涓? //绗笁绉嶆柟寮忚幏鍙朇lass瀵硅薄 try { Class stuClass3 = Class.forName("fanshe.Student"); //娉ㄦ剰姝ゅ瓧绗︿覆蹇呴』鏄湡瀹炶矾寰勶紝灏辨槸甯﹀寘鍚嶇殑绫昏矾寰勶紝鍖呭悕.绫诲悕 System.out.println(stuClass3 == stuClass2); //鍒ゆ柇涓夌鏂瑰紡鏄惁鑾峰彇鐨勬槸鍚屼竴涓狢lass瀵硅薄 } catch (ClassNotFoundException e) { e.printStackTrace(); } System.out.println("*****************鑾峰彇鍏湁銆佹棤鍙傜殑鏋勯€犳柟娉?************"); Constructor con = clazz.getConstructor(null); //1>銆佸洜涓烘槸鏃犲弬鐨勬瀯閫犳柟娉曟墍浠ョ被鍨嬫槸涓€涓猲ull,涓嶅啓涔熷彲浠ワ細杩欓噷闇€瑕佺殑鏄竴涓弬鏁扮殑绫诲瀷锛屽垏璁版槸绫诲瀷 //2>銆佽繑鍥炵殑鏄弿杩拌繖涓棤鍙傛瀯閫犲嚱鏁扮殑绫诲璞°€?/span> System.out.println("*************鑾峰彇鍏湁瀛楁**骞惰皟鐢?****************"); Field f = stuClass.getField("name"); System.out.println(f); System.out.println("***************鑾峰彇绉佹湁鐨剆how4()鏂规硶******************"); m = stuClass.getDeclaredMethod("show4", int.class); System.out.println(m); m.setAccessible(true);//瑙i櫎绉佹湁闄愬畾 Object result = m.invoke(obj, 20);//闇€瑕佷袱涓弬鏁帮紝涓€涓槸瑕佽皟鐢ㄧ殑瀵硅薄锛堣幏鍙栨湁鍙嶅皠锛夛紝涓€涓槸瀹炲弬 System.out.println("杩斿洖鍊硷細" + result); } }
以上是关于Java鍙嶅皠浠嬬粛的主要内容,如果未能解决你的问题,请参考以下文章