zoukankan      html  css  js  c++  java
  • 反射

    1、反射
    最常见一种方式:通过一个给定的字符串(包.类名)来实例化一个类的对象。
    Class<?> c1 = null;
    try {
    c1 = Class.forName("test.TimerDemo");
    } catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    System.out.println(c1.getName());

    2、反射调用类中的方法
    public void fun2() throws Exception {
    Class<?> c1 = null;
    c1 = Class.forName("test.TimerDemo");
    Method m = c1.getMethod("say");
    m.invoke(c1.newInstance());
    }

    public void say() {
    System.out.println("Hello");
    }

    3、反射调用类中的方法,方法带有参数。如果参数传递个数或类型与Person中不一致会出错
    public String sayHello(String name,int age){
    return name + ",你好!我今年:" + age + "岁了!" ;
    }

    Class<?> c1 = null;
    c1 = Class.forName("test.Person");
    Method m = c1.getMethod("sayHello", String.class, int.class);
    System.out.println(m.invoke(c1.newInstance(), "mb", 20));
    输出结果:
    mb,你好!我今年:20岁了!

    4、通过反射操作属性
    Person属性:name,age

    Class<?> c1 = null;
    Object obj = null;
    c1 = Class.forName("test.Person");
    obj = c1.newInstance();
    Field name = c1.getDeclaredField("name");
    Field age = c1.getDeclaredField("age");
    name.setAccessible(true);
    name.set(obj, "张三");
    age.setAccessible(true);
    age.set(obj, 20);
    System.out.println(name.get(obj) + ":" + age.get(obj));
    输出结果:张三:20

  • 相关阅读:
    在Windows环境中使用版本管理工具Git [转]
    poj3630 Phone List **
    UVa10382 Watering Grass **
    软件项目计划书格式 [转]
    POI2001 Ants and the ladybug ***
    RMQ+1/1算法 [转]
    poj3264 Balanced Lineup *
    Windows Server 2003 出现的Service Unavailable怎么办?
    单车环佛山一环
    天凉了,大家多穿衣服
  • 原文地址:https://www.cnblogs.com/mabiao008/p/6138467.html
Copyright © 2011-2022 走看看