zoukankan      html  css  js  c++  java
  • 反射的基础运用

     

     1.获取class对象的三种方法

     1 public class DemoReflect {
     2     public static void main(String[] args) {
     3         try {
     4             //1.通过Class类的静态方法 froName()
     5             Class clazz1 = Class.forName("cn.kgc.Reflect.Person");
     6             //2.通过某个类的对象获得类对象 Object------>Object.getClass()
     7             Person p = new Person();
     8             Class clazz2 = p.getClass();
     9             //3.通过类名获取  任何数据类型都有一个“静态”的class属性  类属于一种引用数据类型
    10             Class clazz3 = Person.class;
    11             System.out.println(clazz1+"
    "+clazz2+"
    "+clazz3);
    12         } catch (ClassNotFoundException e) {
    13             e.printStackTrace();
    14         }
    15     }
    16 }

    2.获取Class对象的信息

     1 public class getClassInfo {
     2     public static void main(String[] args) throws ClassNotFoundException {
     3         //获得类对象
     4         Class clazz = Class.forName("cn.kgc.Reflect.Person");
     5         //获得类对象的 简单类名
     6         String className = clazz.getSimpleName();
     7         //获得类对象的 全类名 包括包名
     8         String classFullName = clazz.getName();
     9         System.out.println(className+"
    "+classFullName);
    10     }
    11 }

    3.获得类对象的构造方法并用构造方法获得实例对象

     1 public class getConstruct {
     2     public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException, ClassNotFoundException {
     3         //获得类对Person类对象
     4         Class clazz = Person.class;
     5 
     6         //获得类对象的无参构造方法
     7         Constructor constructor1 = clazz.getConstructor();
     8         //获得有参构造方法
     9         Constructor constructor2 = clazz.getConstructor(String.class, int.class);
    10         //获得构造方法的数组
    11         Constructor[] constructors = clazz.getConstructors();
    12 
    13         //通过获得的构造方法获得实例
    14         //1.无参构造获得实例
    15         Object obj01 = constructor1.newInstance();
    16         //2.有参构造获得实例
    17         Object obj02 = constructor2.newInstance("小龙女", 28);
    18 
    19     }
    20 }

    4.通过反射获得类对象的方法并使用得到的方法

    1 public class Demo2GetMthod {
    2     public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InstantiationException, InvocationTargetException {
    3         Class clazz = Person.class;
    4         Person p = (Person) clazz.newInstance();//获得实例对象
    5         Method getName = clazz.getMethod("getName");
    6         Method setName = clazz.getMethod("setName", String.class); //如果是有参构造 方法名后边必须跟上参数类型的反射类
    7         setName.invoke(p, "小龙女");//相当于 p.setName("小龙女")
    8     }
    9 }
  • 相关阅读:
    IOS图像处理(6)在内存上下文中绘图
    IOS图像处理(5)填充模式
    IOS图像处理(4)坐标变化
    IOS图像处理(3)绘制路径
    IOS图像处理(2)绘制文本
    IOS图像处理(1)绘制简单的几何图形
    containsString
    UIScrollView zoom in/out center
    Mac Sublime Text 2 快捷键(转)
    Characteristics with cached values must be read-only
  • 原文地址:https://www.cnblogs.com/MrliBlog/p/11051318.html
Copyright © 2011-2022 走看看