Java中反射的一個復雜運用。本站提示廣大學習愛好者:(Java中反射的一個復雜運用)文章只能為提供參考,不一定能成為您想要的結果。以下是Java中反射的一個復雜運用正文
簡介
首先引見一些不太適用的解釋:JAVA反射機制是在運轉形態中,關於恣意一個類,都可以知道這個類的一切屬性和辦法;關於恣意一個對象,都可以調用它的恣意辦法和屬性;這種靜態獲取信息以及靜態調用對象辦法的功用稱為java言語的反射機制。
復雜運用
反射,在java中是十分罕見和好用的一種方式,(但是大家需求知道,他的效率是比擬低的,所以要慎用)當然在基於java言語而發生的Android中也是可以運用的,我們可以運用反射來獲取一些零碎並不開放,但是存在的類,從而調用他的一些辦法,上面就復雜的寫一下,應用java反射來獲取類和調用它的辦法的完成。
//需求被反射調用的類的途徑 String className = "com.example.test.JavaReflect";Class reflect = null; try { //經過途徑來獲取java類 reflect = Class.forName(className); //實例化對應得類 Object javaReflect = reflect.newInstance(); if(null != javaReflect) { //反射出該Class類中的stringToUp()辦法 stringToUp是辦法名,String.class是參數類型 Method stringToUp = reflect.getDeclaredMethod("stringToUp", String.class); //取消訪問公有辦法的合法性反省 stringToUp.setAccessible(true); //調用stringToUp()辦法,第一個參數表示對應的類,第二個是辦法的參數 String str = (String) stringToUp.invoke(javaReflect,"java reflect test"); System.out.println("result:"+str); } }catch (Exception e) { e.printStackTrace(); }
我們來看一下,在stringToUp外面做了什麼:
public String stringToUp(String str){ return str.toUpperCase(); }
其實就是一個對字符串轉換成大寫,然前往,好了我們來看一下輸入後果:
01-02 08:09:11.959 6150-6150/com.zxf.alpha I/System.out: result:JAVA REFLECT TEST
幾乎就是完滿。
總結
好了,以上就是這篇文章的全部內容了,反射在Android中的使用范圍也很多,比方我們項目有多個module的時分,你想在module外面調用主的順序的一個辦法你就可以這麼干,也可以用反射來調用一些零碎為地下的辦法,但是效率不太高。希望本文的內容對大家學習或許運用Java中的放射能有所協助,假如有疑問大家可以留言交流。