Я нашел интересную вещь, работая с размышлением. Я попытался получить конструкторы простого класса и их модификаторы.
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) или типа параметров (примитивный или ссылочный). Как это могло быть, тогда как "переходный" не является допустимым модификатором для конструктора?