zoukankan      html  css  js  c++  java
  • [Java反射机制] 基本操作的全演示

     1 import java.lang.reflect.Constructor;
    2 import java.lang.reflect.Field;
    3 import java.lang.reflect.Method;
    4
    5 class Person {
    6 private int age = -1;
    7
    8 public Person(int age) {
    9 this.age = age;
    10 }
    11
    12 private void method() {
    13 System.out.println("this is a private method.");
    14 }
    15
    16 public void printAge() {
    17 System.out.println(this.age);
    18 }
    19 }
    20
    21 public class ReflectionDemo03 {
    22
    23 /**
    24 * @param args
    25 */
    26 public static void main(String[] args) throws Exception {
    27 //通过反射创建对象
    28 Class<?> classType = Person.class;
    29
    30 Constructor cons = classType.getConstructor(int.class); // 获得构造方法
    31
    32 Person person = (Person) cons.newInstance(20);
    33
    34 person.printAge(); // 输出20
    35
    36 // 修改私有的成员变量age
    37
    38 Field field = classType.getDeclaredField("age");
    39 field.setAccessible(true); // 抑制Java规范检查 否则会抛出异常
    40 field.set(person, 50);
    41
    42 person.printAge(); // 变成了50
    43
    44 // 调用私有的方法
    45 Method method = classType.getDeclaredMethod("method", new Class[] {}); // 获得method方法的Method对象
    46 method.setAccessible(true); // 压制检查
    47 method.invoke(person, new Class[] {});
    48 }
    49 }
    My New Blog : http://blog.fdlife.info/ The more you know, the less you believe.
  • 相关阅读:
    第二次结对编程作业
    团队项目-需求分析报告
    Beta阶段第四次会议
    Beta阶段第三次会议
    Beta阶段第二次会议
    Beta阶段第一次会议
    Beta设计和计划
    项目展示
    事后分析
    α版本发布说明
  • 原文地址:https://www.cnblogs.com/ForDream/p/2330695.html
Copyright © 2011-2022 走看看