Student stu=new Student();
Class<?> c = Class.forName("test.Student");
//得到构造方法
Constructor<?> ca = c.getConstructor();
//通过构造方法实例化
ca.newInstance();
三种方式获得类对象
1.类名.class.newinstace:来获得无参的方法
Student stu = Student.class.newInstance();
2.对象名.getclass
Student stu=new Student();
Class<? extends Student> c = stu.getClass();
//Field:只能得到公开的属性
Field f = c.getField("sid");
//DeclaredField:得到所有的修饰符属性
Field f = c.getDeclaredField("sid");
System.out.println(f);
//得到属性名
System.out.println(f.getName());
//得到属性类型
System.out.println(f.getType());
//得到属性的修饰符,修饰符是用数字表示的
System.out.println(f.getModifiers());
3class.formName(全险定名)
Class<?> c = Class.forName("test.Student");
Object obj = c.newInstance();
Student stu=(Student)obj;
实例化类对象
c.newInstance();
获取该指定对象的属性
Field f = c.getDeclaredField("sid");
得到属性名
System.out.println(f.getName());
//得到属性类型
System.out.println(f.getType());
//得到属性的修饰符,修饰符是用数字表示的
System.out.println(f.getModifiers());
//得到所有的属性
Field[] fs = c.getDeclaredFields();
for (Field f : fs) {
// 得到属性名
System.out.println(f.getName());
// //得到属性类型
System.out.println(f.getType());
// //得到属性的修饰符,修饰符是用数字表示的
System.out.println(f.getModifiers());
}
//私有的属性
Class<?> c = Class.forName("test.Student");
//拿到类对象的构造方法,():里面写他代什么参
Constructor<?> cs = c.getConstructor(String.class);
//给实例化对象添加值
Object stu = cs.newInstance("soo1");
//获取该对象的属性
Field f = c.getDeclaredField("sid");
//凡是该对象私有的(方法,属性)运行前都要授权
f.setAccessible(true);
System.out.println(f.get(stu));
//私有的方法
Constructor<?> cq = c.getDeclaredConstructor(Integer.class);
Field ff = c.getDeclaredField("age");
cq.setAccessible(true);
Object sq = cq.newInstance(17);
System.out.println(ff.get(sq));
//多个参数
//拿到该类的对象
Class<?> c = Class.forName("test.Student");
//拿到带两个构造方法
Constructor<?> cs = c.getDeclaredConstructor(String.class,String.class);
//用该构造方法实例化
Object obj = cs.newInstance("s002","zs");
//得到这两个属性
Field[] fi = c.getDeclaredFields();
for (Field f : fi) {
//给私有属性授权
f.setAccessible(true);
System.out.println(f.get(obj));
}
//得到该类对象方法
Class<?> c = Class.forName("test.Student");
Object obj = c.newInstance();
Method m = c.getMethod("hello");
//运行方法
m.invoke(obj);
//获取私有代参的方法`在这里插入代码片`
Class<?> c = Class.forName("test.Student");
Object obj = c.newInstance();
Method m = c.getDeclaredMethod("add",Integer.class,Integer.class);
m.setAccessible(true);
System.out.println(m.invoke(obj, 1,2));
}
}