/**
*
* 通过Class对象创建其表示的对象
*
*/
public class InstanceDemo {
public static void main(String[] args) {
Class ysClass = YunSong.class;
try {
YunSong ys = (YunSong) ysClass.newInstance();
ys.setName("云松");
ys.setAge(35);
System.out.println(ys);
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
public class InstanceDemo2 {
public static void main(String[] args) {
Class ysClass = YunSong.class
//通过调用getConstructors()获取此类的所有的构造方法(公共的)
Constructor<YunSong>[] cs = ysClass.getConstructors()
for (int i = 0
Constructor c = cs[i]
String name = c.getName()
System.out.println(Modifier.toString(c.getModifiers())+","+name)
Class[] csParameters = c.getParameterTypes()
for (int j = 0
System.out.println(csParameters[j].getName())
}
System.out.println("--------")
}
System.out.println("-----获取此类的所有的公共的方法------")
//通过 getMethods获取此类的所有的公共的方法
Method[]methods = ysClass.getMethods()
for (Method method : methods) {
System.out.println("方法的名称:"+method.getName())
System.out.println("返回值类型:"+method.getReturnType().toString())
Class[] ps = method.getParameterTypes()
for (Class class1 : ps) {
System.out.println("参数名称:"+class1.getName()+",参数修饰符"+Modifier.toString(class1.getModifiers()))
}
System.out.println("----")
}
System.out.println("-----获取此类的所有的公共的属性------")
//通过获取此类的所有的公共的属性
Field[] fields = ysClass.getFields()
for (Field field : fields) {
System.out.println("属性名称:"+field.getName()+",属性修饰符:"
+Modifier.toString(field.getModifiers())+",属性类型:"+field.getType().toString())
}
//已知方法的参数,可以使用getMethod()
try {
Method setNameMethod = ysClass.getMethod("setName", String.class)
YunSong yss = (YunSong)ysClass.newInstance()
setNameMethod.invoke(yss, "云松")
System.out.println("设置完:"+yss)
} catch (NoSuchMethodException | SecurityException e) {
e.printStackTrace()
} catch (IllegalAccessException e) {
e.printStackTrace()
} catch (IllegalArgumentException e) {
e.printStackTrace()
} catch (InvocationTargetException e) {
e.printStackTrace()
} catch (InstantiationException e) {
e.printStackTrace()
}
}
}