public static void main(String[] args) throws Exception {
Class<?> c = Class.forName("com.Test");
// 这个是获得指定方法,我们先获得普通方法
Method m = c.getMethod("test");
// 这里执行会失败了,因为我们们的类没进行实例化
// m.invoke(c);
// 这样就不会,这里使用了默认的构造
m.invoke(c.newInstance());
// 但是静态方法不用实例化就可以
Method m2 = c.getMethod("staticTest");
m2.invoke(c);
// 当然我们还能获得所有的方法信息
// 获得该类所有方法
c.getDeclaredMethods();
// 获得包括继承的类的所有方法
c.getMethods();
}
public static void main(String[] args) throws Exception {Class<?> c = Class.forName("com.Test");// 这个是获得指定方法,我们先获得普通方法Method m = c.getMethod("test");// 这里执行会失败了,因为我们们的类没进行实例化// m.invoke(c);// 这样就不会,这里使用了默认的构造m.invoke(c.newInstance());// 但是静态方法不用实例化就可以Method m2 = c.getMethod("staticTest");m2.invoke(c);// 当然我们还能获得所有的方法信息// 获得该类所有方法c.getDeclaredMethods();// 获得包括继承的类的所有方法c.getMethods();}
3.获得字段信息:
Java代码
public static void main(String[] args) throws Exception {
Class<?> c = Class.forName("com.Test");
// 私有字段是无法通过公有方式访问
// Field f1 = c.getField("number");
// public 字段是可以直接访问
Field f = c.getField("name");
System.out.println(f);
// 这是赋值,必须先获得对象实例,可以为字段赋值
Object o = c.newInstance();
f.set(o, "2");
System.out.println(f.get(o));
// 其他方法,和获取method 差不多
}
public static void main(String[] args) throws Exception {Class<?> c = Class.forName("com.Test");// 私有字段是无法通过公有方式访问// Field f1 = c.getField("number");// public 字段是可以直接访问Field f = c.getField("name");System.out.println(f);// 这是赋值,必须先获得对象实例,可以为字段赋值Object o = c.newInstance();f.set(o, "2");System.out.println(f.get(o));// 其他方法,和获取method 差不多}
关于构造器,权限等这些就可以看API,这里仅仅介绍。