Java利器之反射

  • 介绍
在反射中使用一系列的对象来表示一个类中的所有内容,例如:java.lang.reflect.Method类表示类中的方法,java.lang.reflect.Field类表示类中的属性。
  • 属性篇
获取一个类中的属性(Field)的方法是:public Field[] getFields() throws SecurityException。这个方法返回的是public的属性。 要想获取所有的属性(包括private),可以调用public Field[] getDeclaredFilds[] throws SecurityException。 如果要修改private的属性的话,就需要调用方法public void setAccessible(boolean flag) throws SecurityException设置为可修改的(参数为true是代表可修改)。 要想获取这个属性的类型,可以调用:getGenericType。
  • 调用方法
参数为数组 Bundle[] bundles = SuRenBundleActivator.getContext().getBundles(); Method method = packageAdmin.getClass().getMethod("refreshPackages", Bundle[].class); method.invoke(packageAdmin, new Object[]{bundles});
  • 注解Annotation
具体内容请看这里。
  • 自定义类加载路径
要查找的类和当前运行的类不在一个类路径下的时候,可以采用下面的办法。 ClassLoader loader = new URLClassLoader(new URL[]{new java.io.File(typePath).toURL()}); Class<?> actionClazz = loader.loadClass(type);

你可能感兴趣的:(java,反射)