这次是第二篇:实例化对象、接口与父类、修饰符与属性。在实例化对象之前,我们已经讲解了创建对象的方式,包括new、克隆、反序列化,还有一种方法。根据Class对象,使用newInstance()或constructor实例化对象。只要调用下面的api//获取源码Class>clz=Class.forName("com.shsxt.ref.simple.User");//第一种方法:通过newInstance()创建一个对象Useruser=(用户)clz.newInstance();user.setUname("sxt");user.setUpwd("good");//方法二:通过getDeclaredConstructors()创建对象,获取所有构造函数(注意顺序)Constructor>[]cons=clz.getDeclaredConstructors();for(Constructor>c:cons){System.out.println(c);}//注意上面的输出结果,然后实例化,否则参数容易出错Useru1=(User)cons[0].newInstance("shsxt","good");Useru2=(User)cons[1].newInstance("sxt");Useru3=(User)cons[2].newInstance();System.out.println(u1.getUname()+u1.getUpwd());注意:newInstance()调用的是空结构,如果空结构不存在,会出现异常。从这里可以看出,使用其他构造函数创建对象比较麻烦,但是使用空构造函数就很简单了。确保空构造存在。接口和父类通过api获取接口和父类//获取源码Class>clz=Class.forName("com.shsxt.ref.simple.User");//获取所有接口Class>[]inters=clz.getInterfaces();for(Class>in:inters){System.out.println(in.getName());}//获取父类Class>cls=clz.getSuperclass();System.out.println("继承的父类是:"+cls.getName());修饰符可用于获取修饰符。Class>clz=Class.forName("com.shsxt.ref.simple.User");//获取修饰符intn=clz.getModifiers();//使用修饰符转换成对应的字符串System.out.println(Modifier.toString(n));attribute获取所有属性(包括父类或接口),使用Field操作Class>clz=Class.forName("com.shsxt.ref.simple.User");//获取属性System.out.println("===============该类的属性==========");//获取该类的所有属性Field[]field=clz.getDeclaredFields();for(inti=0;i
