当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Java java.lang.reflect.Constructor用法及代码示例


java.lang.reflect.Constructor 类用于管理构造函数元数据,例如构造函数的名称、构造函数的参数类型和构造函数的访问修饰符。我们可以在运行时检查类的构造函数并实例化对象。 Constructor[] 数组将为类中声明的每个公共构造函数提供一个 Constructor 实例。

为了获取Constructor对象,可以从Class对象中获取Constructor类对象。

参数:T- 声明构造函数的类

实现的接口如下:

  • AnnotatedElement
  • GenericDeclaration
  • Member

示例:

Class aClass = Employee.class;
Constructor[] constructors = aClass.getConstructors();

先决条件:

让我们讨论一些获取构造函数信息的方法

  1. Type.GetConstructors()可以获取相应类中的所有公共构造函数。它返回一个构造函数数组。
  2. Class getDeclaredConstructors() 无论 public 关键字如何,都可以获取相应类中的所有构造函数。
  3. getName():一个可以得到 相应构造函数的名称。
  4. getModifiers(): 以整数形式返回由此 Constructor 对象表示的构造函数的 Java 语言修饰符。应该使用 Modifier 类来解码修饰符。
  5. 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 


相关用法


注:本文由纯净天空筛选整理自kapilnama1998大神的英文原创作品 java.lang.reflect.Constructor Class in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。