zoukankan      html  css  js  c++  java
  • Java反射学习-4

    反射调用方法:

     1 package cn.tx.reflect;
     2 
     3 import java.lang.reflect.Constructor;
     4 import java.lang.reflect.Method;
     5 
     6 /**
     7  * 反射调用方法
     8  * Object java.lang.reflect.Method.invoke(Object obj, Object... args)
     9  * 如果底层方法是实例方法,第一个参数就是该实例对象,第二个参数是方法的参数列表,invoke的返回值就是实例方法的返回值
    10  * 如果底层方法是静态的,那么可以忽略指定的obj参数,可以为null
    11  * 如果底层方法所需的形参为0,则所提供的args数组长度可以为0或null(参见后面的method2.invoke(object))
    12  * @author Administrator
    13  * 
    14  */
    15 public class ReflectLearn4 {
    16     public static void main(String[] args) throws Exception {
    17 
    18         Class<?> clazz = Class.forName("cn.tx.reflect.Person");
    19         //获取cn.tx.Person类的无参构造
    20         Constructor<?> constructor = clazz.getConstructor();
    21         //获取一个实例
    22         Object object = constructor.newInstance();
    23         
    24         //反射调用setName()方法:method.invoke,返回的就是调用的方法的返回值
    25         Method method = clazz.getDeclaredMethod("setName", String.class);
    26         Object invoke = method.invoke(object, "james");//set方法,没有返回值,此处invoke是 null
    27         System.out.println(object.toString()); //Person [address=null, id=null, name=james]
    28         
    29         //反射调用getName()方法
    30         Method method2 = clazz.getDeclaredMethod("getName");
    31         Object invoke2 = method2.invoke(object);
    32         System.out.println(invoke2);
    33         
    34         //反射调用静态方法
    35         Method method3 = clazz.getDeclaredMethod("printInfo",null); //printInfo方法没有参数,写null 
    36         method3.invoke(null,null);//静态方法,第一个参数可以为null
    37     
    38     }
    39 
    40 }

    结果如下:

  • 相关阅读:
    网络编程学习笔记(二)基于TCP的Socket编程
    网络编程学习笔记(一)网络基础知识
    Java IO学习笔记(五)对象流
    Java IO学习笔记(四)打印流
    Java IO学习笔记(三)转换流、数据流、字节数组流
    Java IO学习笔记(二)缓冲流
    Java IO学习笔记(一)
    服务提供者框架
    超简单——自己搭建ftp服务器
    简单的排序算法实现
  • 原文地址:https://www.cnblogs.com/enjoyjava/p/9135575.html
Copyright © 2011-2022 走看看