簡體   English   中英

反射不打印類中的構造函數名稱

[英]reflection not printing constructor name in a class

我正在嘗試使用反射來打印構造函數名稱,但是它跳過了用於打印循環名稱的循環。

package reflection.com;

import java.lang.*;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

abstract interface FirstInterface {

    void showFirstInterface();
}

abstract interface SecondInterface {

    void showSecondInterface();
}

abstract interface ThirdInterface {

    void showThirdinterface();
}

class SuperClass implements FirstInterface {

    int x, y, z;

    SuperClass() {
        System.out.println("Super Class Constructor...");
    }

    public void showFirstInterface() {
        System.out.println("In class Super Class....");
    }
}

public class SubClass extends SuperClass implements SecondInterface, ThirdInterface {

    int a, b, c;

    SubClass() {
    }

    SubClass(int a, int b, int c) {

    }

    public void showSecondInterface() {
        System.out.println("In class Sub Class implementing Second Interface...");

    }

    public void showThirdinterface() {

        System.out.println("In class Sub Class implementing Third Interface...");
    }
}

class ReflectionTest {

    public static void main(String[] args) {
        Class class1 = SubClass.class;
        int modifier = class1.getModifiers();
        Class superClass = class1.getSuperclass();
        Class[] interfaces = class1.getInterfaces();
        Constructor[] constructor = class1.getConstructors();
        Method[] method = class1.getMethods();
        Field[] field = class1.getFields();
        System.out.println("Fully Qualified Class Name..." + class1.getName());
        System.out.println("Class Name..." + class1.getSimpleName());
        System.out.println("Class Modifier...." + Modifier.isPublic(modifier));
        System.out.println("Class Super Class....." + superClass.getName());
        System.out.println("Following are the interfaces.....");
        for (int i = 0; i < interfaces.length; i++) {
            System.out.println(interfaces[i].getName());
        }
        System.out.println("Following are the Constructor.....");
        for (int i = 0; i < constructor.length; i++) {
            System.out.println(constructor[i].getName());
        }
        System.out.println("Following are the Fields.....");
        for (int i = 0; i < field.length; i++) {
            System.out.println(field[i].getName());
        }
        System.out.println("Following are the Methods.....");
        for (int i = 0; i < method.length; i++) {
            System.out.println(method[i].getName());
        }
        for (Method method1 : method) {
            System.out.println(method1.getName());
        }
    }
}

我嘗試調試該應用程序,但沒有使用它,而不會進入for循環本身。

誰能幫我這個?

getConstructors()的文檔中[強調我的]:

返回一個包含Constructor對象的數組,該對象反映此Class對象表示的類的所有公共構造函數。

您的課程沒有任何公共構造函數。 這兩個構造函數是程序包私有的:

public class SubClass ... {
    SubClass() {}
    SubClass(int a, int b, int c) {}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM