• Java 反射 方法调用


    在使用Java 反射时,对方法的调用,可能碰到最多的问题是,方法的变量如何使用。其实,调用方法的变量全部在参数数组里,不管有多少个参数,你都要把它放在参数数组里,如果是单个非数组参数,则可不使用参数数组.

    如一个类中main方法的参数为String[] args,则在Java reflect中调用时,需要放在new Object[]{}中。

    	/**
    	 * 调用非当前路径下的类
    	 */
    	public void classLoadTest2(){
    		try {
    			URL[] urls = new URL[]{ new File("D:\Users\workspace\ClassLoadTest\bin").toURI().toURL() };
    			ClassLoader clsLoader = new URLClassLoader(urls, this.getClass().getClassLoader());
    			Class<?> c  =clsLoader.loadClass("test.ClassLoaderTest");			
    			//Class<?> c = Class.forName("test.ClassLoaderTest");
    			
    			Method[] ms = c.getDeclaredMethods();
    			Object obj = c.newInstance();
    			for(int i=0;i<ms.length;i++){
    				Method m = ms[i];
    				System.out.println("Method:" + m.getName());
    
    				Type[] types = m.getGenericParameterTypes();
    				System.out.println("param count:" + types.length);
    				for (int j = 0; j < types.length; j++) {
    					System.out.println("Method[" + m.getName() + "] params:"
    							+ types[j].toString());  
    				}
    				
    				if("main".equals(m.getName())){
    					m.invoke(obj, new Object[]{new String[]{}});
    				}	
    			}	
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}	


  • 相关阅读:
    外观模式
    享元模式
    装饰模式
    适配器模式
    组合模式
    典型用户模板与场景
    知识圈APP开发记录(十二)
    知识圈APP开发记录(十一)
    知识圈APP开发记录(十)
    周总结(七)
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3246816.html
Copyright © 2020-2023  润新知