zoukankan      html  css  js  c++  java
  • 反射小结

    反射知识:

    1.Class类:

    获取一个Class类有三种方法:

    Java代码 复制代码 收藏代码
    1. //第一种获取方法,直接了当   
    2. Class clazz1 = String.class;   
    3.            
    4. //第二种获取方法,对实体类运用方法   
    5. String str = "just do it";   
    6. Class clazz2 = str.getClass();   
    7.            
    8. //第三种获取方法,直接传递一个类名,字符串形式   
    9. Class clazz3 = Class.forName("java.lang.String");  
    //第一种获取方法,直接了当
    Class clazz1 = String.class;
    		
    //第二种获取方法,对实体类运用方法
    String str = "just do it";
    Class clazz2 = str.getClass();
    		
    //第三种获取方法,直接传递一个类名,字符串形式
    Class clazz3 = Class.forName("java.lang.String");

    2.Field类:

    获取一个Filed字段类的,有四种方法:

    Java代码 复制代码 收藏代码
    1. //1-->获取所有申明的字段   
    2. Field[] fields1 = clazz1.getDeclaredFields();   
    3.            
    4. //2-->获取所有的公共类字段   
    5. Field[] fields2 = clazz1.getFields();    
    6.            
    7. //3-->获取指定字段名(所有申明的字段都可获取)   
    8. Field field1 = clazz1.getDeclaredField("value");   
    9.            
    10. //4-->获取指定公共字段名   
    11. Field field2 = clazz1.getField("CASE_INSENSITIVE_ORDER");  
    //1-->获取所有申明的字段
    Field[] fields1 = clazz1.getDeclaredFields();
    		
    //2-->获取所有的公共类字段
    Field[] fields2 = clazz1.getFields(); 
    		
    //3-->获取指定字段名(所有申明的字段都可获取)
    Field field1 = clazz1.getDeclaredField("value");
    		
    //4-->获取指定公共字段名
    Field field2 = clazz1.getField("CASE_INSENSITIVE_ORDER");

    3.Method类:同Field有四种方法:

    Java代码 复制代码 收藏代码
    1. Method[] methods1 = clazz1.getDeclaredMethods();   
    2. Method[] methods2 = clazz1.getMethods();   
    3.            
    4. Method method1 = clazz1.getDeclaredMethod("checkBounds",new Class[]{byte[].class,int.class,int.class});   
    5. Method method2 = clazz2.getMethod("hashCode");  
    Method[] methods1 = clazz1.getDeclaredMethods();
    Method[] methods2 = clazz1.getMethods();
    		
    Method method1 = clazz1.getDeclaredMethod("checkBounds",new Class[]{byte[].class,int.class,int.class});
    Method method2 = clazz2.getMethod("hashCode");

    如果方法中的无参数,则得到方法时,只需传一个方法名即可

    4.Constructor类:同上有四种方法:

    Java代码 复制代码 收藏代码
    1. Constructor[] cons1 = clazz1.getDeclaredConstructors();   
    2. Constructor[] cons2 = clazz1.getConstructors();   
    3.            
    4. Constructor con1 = clazz1.getConstructor(char[].class);   
    5. Constructor con2 = clazz1.getDeclaredConstructor(new Class[]{int.class,int.class,char[].class});  
    Constructor[] cons1 = clazz1.getDeclaredConstructors();
    Constructor[] cons2 = clazz1.getConstructors();
    		
    Constructor con1 = clazz1.getConstructor(char[].class);
    Constructor con2 = clazz1.getDeclaredConstructor(new Class[]{int.class,int.class,char[].class});

    5.由一个class得到一个类的实体

    Java代码 复制代码 收藏代码
    1. String obj  = (String) clazz1.newInstance();  
    String obj  = (String) clazz1.newInstance();

     用此种方法,类必须有默认构造函数

    6.由一个Constructor对象,得到类的实体

    Java代码 复制代码 收藏代码
    1. String str2 =  (String) con1.newInstance(new char[]{'j','u','s','t'});  
    String str2 =  (String) con1.newInstance(new char[]{'j','u','s','t'});

     7.字段类修改获取字段数据:

    Java代码 复制代码 收藏代码
    1. public Object get(Object obj);//获取一个字段上的数据   
    2.   
    3.   
    4. public void set(Object obj,Object value);//设置一个字段上的数据  
    public Object get(Object obj);//获取一个字段上的数据
    
    
    public void set(Object obj,Object value);//设置一个字段上的数据
    

    8.method方法执行:

    Java代码 复制代码 收藏代码
    1. //public Object invoke(Object obj,Object... args)//方法执行   
    2.   
    3.   
    4. String testStr = "testStr";   
    5. Method method = String.class.getMethod("charAt"new Class[]{int.class});   
    6. char ch = (char) method.invoke(testStr, 1);  
  • 相关阅读:
    leetCode 53. maximum subarray
    leetcode strStr()
    DCNN models
    1*1 的卷积核
    leetcode 14. longest common prefix
    springMVC接受json并打开新页面
    jsp取addFlashAttribute值深入理解即springMVC发redirect传隐藏参数
    hive安装教程本地模式
    poi excel超出65536行数限制自动扩展Invalid row number (65536) outside allow
    java 构造json对象数组
  • 原文地址:https://www.cnblogs.com/yxnchinahlj/p/2494833.html
Copyright © 2011-2022 走看看