zoukankan      html  css  js  c++  java
  • 反射

     
    package javaweb.reflect;
    
    public class Reflect {
    
        /**
         * @param args
         * @throws ClassNotFoundException 
         * 反射:加载类,获得类的字节码
         */
        public static void main(String[] args) throws ClassNotFoundException {
            //加载类方法1:
            Class c1 = Class.forName("javaweb.reflect.Person");
            //2
            Class c2 = new Person().getClass();
            //3
            Class c3 = Person.class;
        }
    
    }

    常用方法:

     1 //public
     2 Constructor getConstructor()
     3 Method getMethod()
     4 Field getField()
     5 //private
     6 Constructor getDeclaredConstructor()
     7 Method getDeclaredMethod()
     8 Field getDeclaredField()
     9 
    10 c.setAccessible(true);//暴力反射

     反射类的构造函数:

    1 public void test(){
    2         Class c = Class.forName("javaweb.reflect.Person");
    3         Constructor<T> cs = c.getConstructor(String.class);
    4         Person p = cs.newInstance("xxx");
    5     }

    反射类的方法:

    1 public void test() throws ClassNotFoundException {
    2             Person p = new Person();
    3             Class c = Class.forName("javaweb.reflect.Person");
    4             Method method = c.getMethod("funName", null);
    5             method.invoke(p,null);
    6         }

    反射类的字段:

     1 package javaweb.reflect;
     2 
     3 import java.lang.reflect.Field;
     4 
     5 public class Reflect {
     6 
     7     /**
     8      * @param args
     9      * @throws ClassNotFoundException 
    10      * 反射:加载类,获得类的字节码
    11      * @throws SecurityException 
    12      * @throws NoSuchFieldException 
    13      * @throws IllegalAccessException 
    14      * @throws IllegalArgumentException 
    15      */
    16     public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{
    17         Person p = new Person();
    18         Class<?> c = Class.forName("javaweb.reflect.Person");
    19         Field f = c.getField("name");
    20         String name =(String) f.get(p);
    21         System.out.println(name);
    22         
    23         //打印出字段name的类型
    24         Class<?> type = f.getType();
    25         System.out.println(type);
    26     }
    27 }
  • 相关阅读:
    使用 matlab 数据集的生成(generate datasets)
    从 RNN 到 LSTM (Short-Term Memory)
    从 RNN 到 LSTM (Short-Term Memory)
    OpenGL(二十二) gluBuild2DMipmaps 加载Mip纹理贴图
    概念的图解 —— 物理
    python数据库做成邮箱的注册系统!
    [每日一题] OCP1z0-047 :2013-08-15 描述GROUPING 函数 .......................................43
    OpenSSL之PKey的EVP封装
    最长回文字符串(manacher算法)
    POJ burnside&&polya整理练习
  • 原文地址:https://www.cnblogs.com/thinksasa/p/2791733.html
Copyright © 2011-2022 走看看