• 反射invoke()方法


    invoke()方法:

        主要是为了类反射,可以在不知道具体类的情况下,根据配置字符串去调用一个类的方法。最简单的方法是可以把方法参数化。

     

       main.invoke():
        比如Test类里有一系列名字相似的方法setValue1、setValue2等,可以把方法名存进数组v[],然后循环里invoke(test, v[i]),就顺序调用了全部的setValue()方法。


        JAVA的反射是指,可以通过一个类名来探察这个类里面的信息,比如说类的属性名,属性名的修饰符,方法名,方法返回值,方法修饰符等等,反正除了方法体得不到,其他都可以用反射得到;反射还可以生成类的实例,通过这个实例定义属性,调用方法,特别是能调用私有的属性和私有的方法。

    import java.lang.reflect.*;
    
    public class Reflect {
    	public static void main(String[] args){
    		try {
    			Class c = Class.forName("java.util.HashSet");			
    			Object o = c.newInstance();
    			Method[] methods = c.getDeclaredMethods();
    			for(Method method : methods){
    				System.out.println(method);
    			}
    			Method m1 = c.getMethod("add", Object.class);
    			m1.invoke(o, "cyq");
    			m1.invoke(o, "hello");
    			m1.invoke(o, "java");
    			System.out.println(o);
    		} catch (Exception e) {			
    			e.printStackTrace();
    		} 
    		
    		
    	}
    
    }
    

    这是一个简单的反射例子,就是得到HashSet中的所有申明的方法,生成一个HashSet的实例,然后往里面添加对象 。


  • 相关阅读:
    Templet
    linux command
    Codeforces Daily
    Programming Contest Challenge Book
    STL
    Struct
    Some of GDUFE
    [屯题] DP系列
    [颓废]ws_fqk省选前刷题记录
    [SDOI2009][BZOJ1876] SuperGCD|高精度|更相减损术
  • 原文地址:https://www.cnblogs.com/DianaCody/p/5425671.html
Copyright © 2020-2023  润新知