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)