反射这个东西项目中会用到,如果我有一个Navigation类,里面定义了很多private String name1; name2.....nameN
。写代码不想用什么setXXX一步一步写,因为这个有规律,此时反射可用上场了。
Class instance = Class.forName("Navigation类路径");
Navigation ng = (Navigation)(instance.newInstance());
好了,此时可以调用其方法了。
Method testmethod= instance.getDeclaredMethod("setName1", String.class);
testmethod.invoke(ng, "name1 例子");
对于这个以后规律的我们可以用for
for (int i = 1; i < 9; i++) {
Method name = instance.getDeclaredMethod("setName"+i, String.class);
Method url = instance.getDeclaredMethod("setUrl"+i, String.class);
name.invoke(ng, "name"+i);
url.invoke(ng, "url"+i);
}
OK,测试下
System.out.println(ng.getName1());
System.out.println(ng.getName2());
System.out.println(ng.getName8());
结果省略。。。