前言
Java反射技术应用广泛,能够配置:类的全限定名、方法和参数,完成对象的初始化,甚至是反射某些方法,大大增强了java的可配置性,当然在运行性能上有所降低,但是相比灵活来说,还是会选择反射的,同时降低了程序的耦合度。
类定义
public class ClassReflect {
private String asdfs;
public ClassReflect(String asdfs) {
this.asdfs = asdfs;
System.out.println(asdfs);
}
public String bbbb() {
System.out.println("fsdfdsfds");
return "测试反射方法!!!哈哈哈哈";
}
}
反射实例
public static void main(String[] args) {
// 类实例创建 调用
ClassReflect cr = new ClassReflect("dsfdsdsadsad");
ClassReflect object2;
try {
// Object a =
// Class.forName("com.flliu.std.reflect.ClassReflect").isInstance(ClassReflect.class);
// System.out.println(a);
// 构造方法反射
object2 = (ClassReflect) Class.forName("com.flliu.std.reflect.ClassReflect").getConstructor(String.class)
.newInstance("fsdfsf1111");
// 调用反射对象方法bbbb()
System.out.println(object2.bbbb());
System.out.println(System.currentTimeMillis());
//反射方法
Method method = cr.getClass().getMethod("bbbb");
method.invoke(cr);
System.out.println(System.currentTimeMillis());
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
}
}