java.lang.reflect.Constructor 類用於管理構造函數元數據,例如構造函數的名稱、構造函數的參數類型和構造函數的訪問修飾符。我們可以在運行時檢查類的構造函數並實例化對象。 Constructor[] 數組將為類中聲明的每個公共構造函數提供一個 Constructor 實例。
為了獲取Constructor對象,可以從Class對象中獲取Constructor類對象。
參數:T- 聲明構造函數的類
實現的接口如下:
- AnnotatedElement
- GenericDeclaration
- Member
示例:
Class aClass = Employee.class; Constructor[] constructors = aClass.getConstructors();
先決條件:
讓我們討論一些獲取構造函數信息的方法
- Type.GetConstructors():可以獲取相應類中的所有公共構造函數。它返回一個構造函數數組。
- Class getDeclaredConstructors():一 無論 public 關鍵字如何,都可以獲取相應類中的所有構造函數。
- getName():一個可以得到 相應構造函數的名稱。
- getModifiers():這 以整數形式返回由此 Constructor 對象表示的構造函數的 Java 語言修飾符。應該使用 Modifier 類來解碼修飾符。
- getParameterTypes():這 返回 特定構造函數的參數類型。
此外,該類的主要方法以表格形式給出如下:
方法 | 說明 |
---|---|
equals(Object obj) | 將此構造函數與指定對象進行比較。 |
Constructor getAnnotatedReceiverType() | 返回一個 AnnotatedType 對象,該對象表示使用類型來指定此可執行對象表示的方法/構造函數的接收者類型。 |
getAnnotatedReturnType() | 返回一個 AnnotatedType 對象,該對象表示使用類型來指定此可執行文件表示的方法/構造函數的返回類型。 |
Class getAnnotation() | 如果存在指定類型的該元素的注釋,則返回該元素的注釋,否則返回 null。 |
getDeclaredAnnotations() | 返回直接出現在該元素上的注釋。 |
getDeclaringClass() | 返回表示聲明此對象表示的可執行文件的類或接口的 Class 對象。 |
getExceptionTypes() | 返回 Class 對象的數組,這些對象表示聲明為由該對象表示的底層可執行文件引發的異常類型。 |
getGenericExceptionTypes() | 返回 Type 對象的數組,這些對象表示聲明為此可執行對象引發的異常。 |
Constructor getGenericParameterTypes() | 返回 Type 對象的數組,這些對象按聲明順序表示由此對象表示的可執行文件的形式參數類型。 |
hashcode() | 返回此構造函數的哈希碼 |
isSynthetic() | 如果此構造函數是合成構造函數,則返回 true |
isVarArgs() | 如果此構造函數被聲明為采用可變數量的參數,則返回 true |
toGenericString() | 返回說明此構造函數的字符串 |
toString() | 返回說明此構造函數的字符串 |
例子:
Java
// Java program to show uses of Constructor class
// present in java.lang.reflect package
// Importing package to that examine and
// introspect upon itself
import java.lang.reflect.*;
// Class 1
// Helper class
class Employee {
// Member variables of this class
int empno;
String name;
String address;
// Constructor of this class
// Constructor 1
public Employee(int empno, String name, String address)
{
// 'this' keyword refers to the
// current object itself
this.empno = empno;
this.name = name;
this.address = address;
}
// Constructor 2
public Employee(int empno, String name)
{
this.empno = empno;
this.name = name;
}
// Constructor 3
private Employee(String address)
{
this.address = address;
}
// Constructor 4
protected Employee(int empno) { this.empno = empno; }
}
// Class 2
// Main class
public class GFG {
// Main driver method
public static void main(String args[])
{
// Creating an object of above class
// in the main() method
Class c = Employee.class;
// Display message
System.out.println("All public constructor are :");
Constructor[] cons = c.getConstructors();
for (Constructor con : cons)
// It will return all public constructor
System.out.print(con.getName() + " ");
// Display message for better readability
System.out.println(
"\n\nAll constructor irrespective of access modifiers");
// Getting constructors of this class
// using getDeclaredConstructors() method
cons = c.getDeclaredConstructors();
// Iterating to print all constructors
for (Constructor con : cons)
System.out.print(con.getName() + " ");
// Display message
System.out.println(
"\n\naccess modifiers of each constructor");
// Iterating to get all the access modifiers
for (Constructor con : cons)
// Print all the access modifiers for all
// constructors
System.out.print(
Modifier.toString(con.getModifiers())
+ " ");
// Parameters types
// Display message only
System.out.println(
"\n\ngetting parameters type of each constructor");
// Iterating to get parameter types of each
// constructor using for-each loop
for (Constructor con : cons) {
Class[] parameratertypes
= con.getParameterTypes();
for (Class c1 : parameratertypes) {
// Print and display parameter types of all
// constructors
System.out.print(c1.getName() + " ");
}
// Here we are done with inner loop
// New line
System.out.println();
}
}
}
輸出
All public constructor are : Employee Employee All constructor irrespective of access modifiers Employee Employee Employee Employee access modifiers of each constructor protected private public public getting parameters type of each constructor int java.lang.String int java.lang.String int java.lang.String java.lang.String
相關用法
- Java java.lang.reflect.Constructor.equals()用法及代碼示例
- Java java.lang.reflect.Constructor.getAnnotation()用法及代碼示例
- Java java.lang.reflect.Constructor.getDeclaredAnnotations()用法及代碼示例
- Java java.lang.reflect.Constructor.getDeclaringClass()用法及代碼示例
- Java java.lang.reflect.Constructor.getExceptionTypes()用法及代碼示例
- Java java.lang.reflect.Constructor.getGenericExceptionTypes()用法及代碼示例
- Java java.lang.reflect.Constructor.getGenericParameterTypes()用法及代碼示例
- Java java.lang.reflect.Constructor.getModifiers()用法及代碼示例
- Java java.lang.reflect.Constructor.getName()用法及代碼示例
- Java java.lang.reflect.Constructor.getParameterAnnotations()用法及代碼示例
- Java java.lang.reflect.Constructor.getParameterTypes()用法及代碼示例
- Java java.lang.reflect.Constructor.hashCode()用法及代碼示例
- Java java.lang.reflect.Constructor.isSynthetic()用法及代碼示例
- Java java.lang.reflect.Constructor.isVarArgs()用法及代碼示例
- Java java.lang.reflect.Constructor.newInstance()用法及代碼示例
- Java java.lang.reflect.Constructor.toGenericString()用法及代碼示例
- Java java.lang.reflect.Constructor.toString()用法及代碼示例
- Java java.lang.reflect.AccessibleObject.getAnnotation()用法及代碼示例
- Java java.lang.reflect.AccessibleObject.getAnnotations()用法及代碼示例
- Java java.lang.reflect.AccessibleObject.getDeclaredAnnotations()用法及代碼示例
- Java java.lang.reflect.AccessibleObject.isAccessible()用法及代碼示例
- Java java.lang.reflect.AccessibleObject.setAccessible()用法及代碼示例
- Java java.lang.reflect.Array.get()用法及代碼示例
- Java java.lang.reflect.Array.getBoolean()用法及代碼示例
- Java java.lang.reflect.Array.getByte()用法及代碼示例
注:本文由純淨天空篩選整理自kapilnama1998大神的英文原創作品 java.lang.reflect.Constructor Class in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。