我在使用反射时发现了有趣的事情。我试图检索简单类的构造函数及其修饰符。
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)或参数类型(原始或引用)如何,都会发生同样的情况。怎么可能,而“瞬态”不是构造函数的有效修饰符?