91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java Method類及invoke方法的用法

發布時間:2020-08-01 09:43:28 來源:億速云 閱讀:725 作者:小豬 欄目:開發技術

這篇文章主要講解了Java Method類及invoke方法的用法,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

在說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 class
	at 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 Method類及invoke方法的用法有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

甘泉县| 蒙城县| 铅山县| 宣化县| 永吉县| 南投市| 资源县| 海城市| 中宁县| 霍邱县| 湘潭县| 阿克陶县| 周口市| 岳普湖县| 滨海县| 河源市| 旺苍县| 手机| 集贤县| 嘉善县| 长沙县| 河南省| 宣汉县| 庄浪县| 安康市| 中牟县| 开原市| 苗栗市| 蓬溪县| 金华市| 固原市| 岳阳市| 乌拉特后旗| 博罗县| 廊坊市| 钟祥市| 库车县| 台州市| 仁怀市| 赣榆县| 嘉黎县|