Class<?> demo1 =Class.forName("testByXxu.A");//方式一
Class<?> demo2 = newA().getClass();//方式二
Class<?> demo3 = A.class;//方式三
Java是一种动态语言,但是反射提供一种动态相关机制,
Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。
class B
{
public static void main(String []args) throws ClassNotFoundException, InstantiationException, SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException{
Class<?> demo1 = Class.forName("testByXxu.A");//方式一,包名+类名,返回一个类
Method ms[] = demo1.getMethods();
for(Method m:ms){
if(m.isAnnotationPresent(excute.class))//扫描使用excute此注解的方法
{
System.out.println(m.getName());
int out = (Integer) m.invoke(demo1.newInstance(),5,2);//调用有注解的public方法
System.out.println(out);
}
}
}
}