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 }
  • 相关阅读:
    从jQuery看JavaScript匿名函数与闭包
    向properties文件中写入信息(针对获取properties文件失败的总结)
    windows系统下的redis启动教程
    第零次作业
    C语言博客作业02循环结构
    c语言博客作业03函数
    第一次作业
    笔记
    整型类型
    鸡和兔
  • 原文地址:https://www.cnblogs.com/thinksasa/p/2791733.html
Copyright © 2011-2022 走看看