利用java反射機制繞過編譯時的類型檢查

思路:

可以使用集合來定義數(shù)組测蘑,利用反射獲取類中指定的方法绽左,
而Method類中的invoke()允許調(diào)用包裝在當前method對象中的方法
因此可以直接調(diào)用add方法添加字符串元素

invoke(Object obj, Object... args)
參數(shù):obj - 從中調(diào)用底層方法的對象
     args - 用于方法調(diào)用的參數(shù) 
返回:使用參數(shù) args在obj上指派該對象所表示方法的結(jié)果

代碼:

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
/**
 * 利用反射可以繞過一些編譯時的類型檢查
 * 比如在integer數(shù)組中加入一個字符串
 * @author: Joker
 * @date: 2017年1月30日 下午8:15:22
 */
public class ReflectDemo
{
    public static void main(String[] args)
    {
        // 創(chuàng)建類型為Interger的ArrayList集合
        ArrayList<Integer> arrayList = new ArrayList<Integer>();
        //add方法給list集合中添加元素
        arrayList.add(101);
        arrayList.add(100);
        arrayList.add(102);

        //獲取字節(jié)碼文件對象
        Class arrayListClass = ArrayList.class;

        try
        {//利用getMethod(String name, Object obj)獲取ArrayList類中指定的add方法  
            Method method = arrayListClass.getMethod("add", Object.class);
        //直接調(diào)用add方法添加字符串元素,返回add方法執(zhí)行后的結(jié)果
            method.invoke(arrayList, "helloworld");

        }
        catch (NoSuchMethodException | SecurityException e)
        {
            e.printStackTrace();
        }
        catch (IllegalAccessException e)
        {
            e.printStackTrace();
        }
        catch (IllegalArgumentException e)
        {
            e.printStackTrace();
        }
        catch (InvocationTargetException e)
        {
            e.printStackTrace();
        }

        System.out.println("新集合為:" + arrayList);

    }
}

控制臺輸出:

新集合為:[101, 100, 102, helloworld]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末趟大,一起剝皮案震驚了整個濱河市创南,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異袍嬉,居然都是意外死亡,警方通過查閱死者的電腦和手機灶平,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門伺通,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人逢享,你說我怎么就攤上這事泵殴。” “怎么了拼苍?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長调缨。 經(jīng)常有香客問我疮鲫,道長,這世上最難降的妖魔是什么弦叶? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任俊犯,我火速辦了婚禮,結(jié)果婚禮上伤哺,老公的妹妹穿的比我還像新娘燕侠。我一直安慰自己,他們只是感情好立莉,可當我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布绢彤。 她就那樣靜靜地躺著,像睡著了一般蜓耻。 火紅的嫁衣襯著肌膚如雪茫舶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天刹淌,我揣著相機與錄音饶氏,去河邊找鬼讥耗。 笑死,一個胖子當著我的面吹牛疹启,可吹牛的內(nèi)容都是我干的古程。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼喊崖,長吁一口氣:“原來是場噩夢啊……” “哼挣磨!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起贷祈,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤趋急,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后势誊,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呜达,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年粟耻,在試婚紗的時候發(fā)現(xiàn)自己被綠了查近。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡挤忙,死狀恐怖霜威,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情册烈,我是刑警寧澤戈泼,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站赏僧,受9級特大地震影響大猛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜淀零,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一挽绩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧驾中,春花似錦唉堪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至持痰,卻和暖如春趾撵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工占调, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留暂题,地道東北人。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓究珊,卻偏偏與公主長得像薪者,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子剿涮,可洞房花燭夜當晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 1.在C/C++中實現(xiàn)本地方法 生成C/C++頭文件之后言津,你就需要寫頭文件對應(yīng)的本地方法。注意:所有的本地方法的第...
    JayQiu閱讀 2,374評論 0 3
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法取试,類相關(guān)的語法悬槽,內(nèi)部類的語法,繼承相關(guān)的語法瞬浓,異常的語法初婆,線程的語...
    子非魚_t_閱讀 31,665評論 18 399
  • Jni數(shù)據(jù)類型 Jni方法 來自 http://blog.chinaunix.net/uid-22028680-i...
    FlyDragonInSky閱讀 917評論 0 0
  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 1,732評論 0 9
  • 最近一段時間感覺讀書越來越少猿棉,每天上下班磅叛,地鐵上聽這本書。 給我最大的感受就是: 感恩你所吃的和喝的 再一次說明了...
    顯梅阿卡西記錄閱讀 268評論 0 1