午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術文章
文章詳情頁

Java Method類及invoke方法原理解析

瀏覽:14日期:2022-08-27 16:38:56

在說Method和invoke的使用之前我們來看一個小例子, 如果看懂了那就ok了

public class MethodInvoke { class Animal { public void print() { System.out.println('Animal.print()'); } } class Cat extends Animal { @Override public void print() { System.out.println('Cat.print()'); } } public static void main(String[] args) throws Exception {Method animalMethod = Animal.class.getDeclaredMethod('print');Method catMethod = Cat.class.getDeclaredMethod('print');Animal animal = new Animal();Cat cat = new Cat();animalMethod.invoke(cat); //相當于 cat調用父類的print方法animalMethod.invoke(animal);//相當于 animal.print();catMethod.invoke(cat); //相當于 cat.print();catMethod.invoke(animal);}}

執行結果如下

Cat.print()Animal.print()Cat.print()Exception in thread 'main' java.lang.IllegalArgumentException: object is not an instance of declaring classat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

代碼中,Cat類覆蓋了父類Animal的print()方法, 然后通過反射分別獲取print()的Method對象。最后分別用Cat和Animal的實例對象去執行print()方法。其中animalMethod.invoke(animal)和catMethod.invoke(cat),示例對象的真實類型和Method的聲明Classs是相同的,按照預期打印結果;animalMethod.invoke(cat)中,由于Cat是Animal的子類,按照多態的特性,子類調用父類的的方法,方法執行時會動態鏈接到子類的實現方法上。

因此,這里會調用Cat.print()方法;而catMethod.invoke(animal)中,傳入的參數類型Animal是父類,卻期望調用子類Cat的方法,因此這一次會拋出異常。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 亚洲国产二区 | 欧美另类videoxo高潮 | 午夜日韩精品 | 国产最新自拍 | 蜜桃在线一区二区 | 精品亚洲精品 | 国内精品偷拍 | 婷婷丁香亚洲 | 天天操夜夜骑 | 亚洲免费在线视频 | 国产高清久久 | 日本黄色高清 | 色婷久久 | 久久久www成人免费毛片 | 国产69久久精品成人看 | 男生操女生免费网站 | 欧美日韩午夜视频 | 国产精品成av人在线视午夜片 | 男人午夜网站 | 免费av一级片 | 大黄网站在线观看 | 2级毛片 | 成人黄色小视频在线观看 | 99热超碰在线 | 国产区在线看 | 国产色中色| 欧美精品一区二区三区四区五区 | 国产精品亚洲成在人线 | 少妇一级淫片免费放中国 | 亚洲午夜片 | 亚洲免费在线观看视频 | 亚洲精品一区二区三区蜜桃久 | 日韩视频在线观看一区二区 | 欧美一级做性受免费大片免费 | 四虎影院免费 | 网站黄色在线观看 | 中文字幕第四页 | 免费看毛片网站 | 成人av午夜 | 亚洲色图第三页 | 日韩一区二区三区在线 |