java反射中为何声明private的构造函数变成默认型

import java.lang.reflect.*;public class accesstest
{
static void start(){
Class cl=obj.class;
Constructor [] c=cl.getDeclaredConstructors();
for (Constructor i:c)
System.out.println(i.toString());
}
public static void main(String[] args){
start();
}

}
class obj{
private obj(){}
public obj(int i){}
obj(float i){}
}图片

父类(Object)声明的是public 无参构造函数为默认构造函数,obj中声明private obj(){} 定义的是无参构造函数取代父类成为新的默认构造函数

我这边打印出来是正常的,没有问题.
估计是jdk版本不一样,toString方法有问题.

可以改改代码

    static void start() {
        Class cl = obj.class;
        Constructor[] c = cl.getDeclaredConstructors();
        for (Constructor i : c){
            System.out.println(Modifier.isPrivate(i.getModifiers()));//看看这里是否有private
            System.out.println(i.toString());
        }
    }

我打印的结果:
true
private obj()
false
public obj(int)
false
obj(float)