运行时<init>方法</init>

时间:2013-10-07 15:32:53

标签: java reflection init

我试图找到<init>方法。我有以下课程:

public class Node<T>{ }
public class Main{
    public static void main(String[] args){
        for(Method m: new Node().getClass().getMethods()){
            System.out.println(m.toString());
        }
    }
}

输出:

public final void java.lang.Object.wait() throws java.lang.InterruptedException
public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException
public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException
public boolean java.lang.Object.equals(java.lang.Object)
public java.lang.String java.lang.Object.toString()
public native int java.lang.Object.hashCode()
public final native java.lang.Class java.lang.Object.getClass()
public final native void java.lang.Object.notify()
public final native void java.lang.Object.notifyAll()

此类具有默认构造函数。因此,当编译<init>时,必须将此构造函数转换为方法Node的默认构造函数。为什么我不能在运行时看到他?

1 个答案:

答案 0 :(得分:3)

您需要获取Constructor个实例

for (Constructor constructor : new Test().getClass().getConstructors()) {
    System.out.println(constructor);
}

打印

public test.Test() // In this case, com.yourpackage.Node() for your class