java - 如何将构造函数、实例初始值设定项、静态初始值设定项检索为方法?

标签 java reflection methods

据我了解,构造函数、实例初始值设定项和静态初始值设定项只是具有特殊名称的方法。我知道<>对于普通标识符来说是非法字符。

如何将这些特殊方法检索为 Method对象(或等效的东西)并调用它们?您可以看一下我写的这段代码:

public class Program {
    /**
     * static <init>() {
     * }
     */
    static {
    }

    /**
     * <init>() {
     * }
     */
    {
    }

    /**
     * <cinit>() {
     * }
     */
    Program(){
    }

    public static void main(String[] args) throws ReflectiveOperationException {
        //get native getDeclaredMethods method
        Method Class$getDeclaredMethods0 = Class.class.getDeclaredMethod("getDeclaredMethods0", boolean.class);
        Class$getDeclaredMethods0.setAccessible(true);

        //list methods of this class
        Method[] methods = (Method[])Class$getDeclaredMethods0.invoke(Program.class, false);
        for (Method m : methods) {
            System.out.println(m);
        }

        //Console output:
        /*
        public static void dirty.Program.main(java.lang.String[]) throws java.lang.ReflectiveOperationException

         */
    }
}

最佳答案

你不能。您可以获取已声明构造函数的构造函数实例,但没有表示可调用静态或实例初始值设定项的 Java 类型。

关于java - 如何将构造函数、实例初始值设定项、静态初始值设定项检索为方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28837161/

相关文章:

Java 字符串乘法

java - 在类中表示数学运算符

java - 从 java 应用程序中全屏打开 Mac

使用 block 动画方法的 iPhone 翻转 View

java - 在java中使用一个方法内生成的本体到另一个方法

C# 自动为参数选择最相关的方法

java - Field#getAnnotation() 不适用于自己的注释

java - Integer 类型引用 String 类型值

Android:扩展一个通过反射获取的隐藏类

java - 使用 kotlin 反射将对象成员属性映射到 hashmap 时出现问题