java反射的简单应用

来源:互联网 发布:淘宝互刷软件 编辑:程序博客网 时间:2024/05/17 09:38

前言:本博客内容由张孝祥java高新技术反射篇整理而来



1.一个静态方法,如果传递过来的是对象,则直接调用该对象的toString()方法打印出来,如果是数组,则把数组中的每个元素打印出来。


//如果是对象则直接打印出来,是数组则挨个打印出来class arrayReflect{public static void main(String[] args) {Person person = new Person("张三三", "男");printObject(person);Object[] intarrays=new Object[]{'a','b','c',1,2,3,4,5};printObject(intarrays);}public static <T> void printObject(T t){Class<? extends Object> clazz = t.getClass();if (clazz.isArray()) {//获取数组的长度int length = Array.getLength(t);for (int i = 0; i < length; i++) {//打印数组中的值System.out.println(Array.get(t, i));}return;}System.out.println(t);}}


输出结果:

Person [name=张三三, sex=男]
a
b
c
1
2
3
4
5


2.一个静态方法,执行该方法后,需在控制台中输入一个全类名,按回车键后,会直接调用这个类的main方法。


// 输入相应全类名 调用该类的main方法class runArguments {public static void main(String[] args) throws ClassNotFoundException,NoSuchMethodException, SecurityException, IllegalAccessException,IllegalArgumentException, InvocationTargetException, IOException {runMainInputForName();}@SuppressWarnings("resource")private static void runMainInputForName() throws ClassNotFoundException,NoSuchMethodException, SecurityException, IllegalAccessException,IllegalArgumentException, InvocationTargetException {Scanner scan = new Scanner(System.in);String className = scan.nextLine();Class<?> clazz = Class.forName(className);Method method = clazz.getMethod("main", String[].class);// 调用静态方法method.invoke(null, (Object) new String[] {});}}

输入:

com.dao.chu.movie.arrayReflect

输出:

Person [name=张三三, sex=男]
a
b
c
1
2
3
4
5





原创粉丝点击