有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java意外的“瞬态”构造函数修饰符

我在进行反思时发现了一件有趣的事情。我试图检索简单类的构造函数及其修饰符

public class Test {
    public Test(Object... args) {}
}

以下是检索构造函数修饰符的代码:

Class<?> clazz = Test.class;
Constructor<?>[] ctors = clazz.getDeclaredConstructors();
for (Constructor<?> ctor : ctors) {        
    int mod = ctor.getModifiers();
    /*if not package-private modifier*/
    if(mod!=0) {
        System.out.println( Modifier.toString(mod)));
    }
}

结果是:

    public transient  

如果我传递给构造函数的不是变量参数,而是数组,就可以了

public class Test {
    public Test(Object[] args) {}
}

结果是:

    public  

无论构造函数修饰符(public、protected、private)或参数类型(primitive或reference),都会发生同样的情况。这怎么可能,而“transient”不是构造函数的有效修饰符


共 (0) 个答案