zoukankan      html  css  js  c++  java
  • Java学习(一):反射的简单例子

    Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法。

    public class JavaTest 
    {
        public static void main(String[] args)
        {
            try 
            {
                Class myClass = Class.forName("Student");
                Object student = (Object)myClass.newInstance();
                Method method = myClass.getMethod("printStudent",String.class,String.class);
                method.invoke(student, "2015", "ZhangSan");
            } 
            catch (Exception e) 
            {
                e.printStackTrace();
            }
            System.out.println("End");
        }
    }
    class Student
    {
        public void printStudent(final String id,final String name)
        {
            System.out.println("id = " + id + ", name = " + name);
        }
    }
        public Object invoke(Object obj,
                         Object... args)
                  throws IllegalAccessException,
                         IllegalArgumentException,
                         InvocationTargetException
    对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。个别参数被自动解包,以便与基本形参相匹配,基本参数和引用参数都随需服从方法调用转换。

    如果底层方法是静态的,那么可以忽略指定的 obj 参数。该参数可以为 null。

    如果底层方法所需的形参数为 0,则所提供的 args 数组长度可以为 0 或 null。

    参数:
    obj - 从中调用底层方法的对象
    args - 用于方法调用的参数
    返回:
    使用参数 argsobj 上指派该对象所表示方法的结果
    抛出:
    IllegalAccessException - 如果此 Method 对象强制执行 Java 语言访问控制,并且底层方法是不可访问的。
    IllegalArgumentException - 如果该方法是实例方法,且指定对象参数不是声明底层方法的类或接口(或其中的子类或实现程序)的实例;如果实参和形参的数量不相同;如果基本参数的解包转换失败;如果在解包后,无法通过方法调用转换将参数值转换为相应的形参类型。
    InvocationTargetException - 如果底层方法抛出异常。
    NullPointerException - 如果指定对象为 null,且该方法是一个实例方法。
    ExceptionInInitializerError - 如果由此方法引起的初始化失败。
  • 相关阅读:
    linux awk 文本分析实例 [视频]
    如何实现 Python 中 selnium 模块的换行
    Python 中当前位置以及目录文件遍历操作
    Python中执行变量而非字符串
    如何使用 sort 命令来找到几个版本库之间的共同文件
    Setup "EQGRP_Lost_in_Translation" Of NAS
    SQL server 2008 安装问题解决
    windows共享文件的方法
    linux command
    knowlege experience
  • 原文地址:https://www.cnblogs.com/moleme/p/4375855.html
Copyright © 2011-2022 走看看