程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> new-可變參數的使用,求過位路過的指教一下

new-可變參數的使用,求過位路過的指教一下

編輯:編程解疑
可變參數的使用,求過位路過的指教一下

請問一下紅框裡的代碼是什麼意思呢,為什麼不能像上面那樣直接example2=(Example01) constructor.newInstance(“100”,“200”,“300”)圖片說明圖片說明圖片說明直接example2=(Example01) constructor.newInstance(“100”,“200”,“300”)的話不斷打印“在創建對象時拋出異常,下面執行setAccessable"

最佳回答:


這個問題要分幾步回答:

1,可變參數,java編譯器是將可變參數當作數組處理的

    method(String... args) { }

等價於

    method(String[] args){ }

2,Constuctor.newInstance()使用的就是可變參數

    public T newInstance(Object ... initargs)

等同於

    public T newInstance(Object[] initargs)

3,你要定位到的構造函數相當於

    Example01(String[] strings)

而你的代碼

    constructor.newInstance(“100”,“200”,“300”)

等同於

    constructor.newInstance(new Object[]{“100”,“200”,“300”})

代表的是找有三個string作為參數的構造函數,因此只能用

    constructor.newInstance(new Object[]{new String[]{“100”,“200”,“300”}})

你理想中希望java能將三個String當作可變參數去匹配,但是除了直接通過方法調用,外部是不能識別可變參數的

fml19920625
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved