如何在 Java 中呼叫私有建構函式


可以使用 java.lang.Class.getDeclaredConstructor() 方法獲取類的私有建構函式的建構函式物件。此方法的引數是一個 Class 物件陣列,其中包含建構函式的形式引數型別。

演示此內容的程式如下所示 -

示例

 線上演示

package Test;
import java.lang.reflect.*;
public class Demo {
   String str;
   Double d;
   public Demo(String str, Double d) {
      this.str = str;
      this.d = d;
   }
   public static void main(String[] args) {
      try {
         Demo obj = new Demo("Apple", 55.983);
         Class c = obj.getClass();
         Class[] arguments = new Class[2];
         arguments[0] = String.class;
         arguments[1] = Double.class;
         Constructor constructor = c.getDeclaredConstructor(arguments);
         System.out.println("Constructor = " + constructor.toString());
      } catch(NoSuchMethodException e) {
         System.out.println(e.toString());
      } catch(SecurityException e) {
         System.out.println(e.toString());
      }
   }
}

輸出

Constructor = public Test.Demo(java.lang.String,java.lang.Double)

讓我們來了解一下上面的程式。

在 main() 方法中建立了 Demo 類的物件。然後,陣列 arguments[] 儲存 String.Class 和 Double.Class 物件。最後,可以使用 getDeclaredConstructor() 方法獲取建構函式物件並進行顯示。演示此內容的程式碼段如下所示 -

Demo obj = new Demo("Apple", 55.983);
Class c = obj.getClass();
Class[] arguments = new Class[2];
arguments[0] = String.class;
arguments[1] = Double.class;
Constructor constructor = c.getDeclaredConstructor(arguments);
System.out.println("Constructor = " + constructor.toString());

更新於: 25-Jun-2020

969 檢視

開啟您的職業生涯

完成課程以獲得認證

開始
廣告
© . All rights reserved.