Java之反射--8.2.2--分析类的结构--方法

//反射分析类的结构——方法
package com.aowin.method;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

import com.aowin.getclass.Student;

//1.获取分析的类的Class对象
//2.反射创建Class对象表示类的对象
//3.获取Class对象表示类中的方法:(1)public权限的方法(2)所有权限的方法
//4.调用方法,通过Method类中的invoke(Object,参数)方法
//注意:根据权限的不同,取消访问权限检查通过setAccessible()方法

public class MethodTest {
    public static void main(String[] args) throws Exception {
        //1.获取分析的类的Class对象
        Class c = new Student().getClass();   //通过对象.getClass()        
        //2.反射创建Class对象表示类的对象
        Constructor con = c.getDeclaredConstructor(String.class,int.class);   //获得指定的所有权限的构造器
        con.setAccessible(true);
        Object obj = con.newInstance("张三",17);        
        //3.获取Class对象表示类中的方法
        //(1)public修饰的方法
        //获取所有的public修饰的方法,包括继承来的
        Method[] ms = c.getMethods();
        for(Method m:ms){
            System.out.println(m); 
        }
        //获取指定的public修饰的方法
        Method mStudy = c.getMethod("study", int.class);  //int.class:有一个int参数的方法
        System.out.println(mStudy); 
        //调用方法:通过invoke(Object,参数);
        mStudy.invoke(obj, 7);  //7:实际参数值
        //(2)所有权限的方法
        //获取所有的所有权限的方法,不包括继承的
        Method[] deMs = c.getDeclaredMethods();
        for(Method m:deMs){
            System.out.println(m); 
        }
        //获取指定的所有权限的方法
        Method mSleep = c.getDeclaredMethod("sleep",null);  //null:空参数的方法
        System.out.println(mSleep); 
        //取消访问权限检查
        mSleep.setAccessible(true); 
        //调用方法
        mSleep.invoke(obj, null);
        
        
        
    }

}
 

转载于:https://my.oschina.net/Watto/blog/874245

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值