Method类(反射)

下面先写一个普通的
1、接口

package com.linfeng.pojo;

public interface HelloService {
    public void sayHello(String name);
}

2、实现类

package com.linfeng.pojo;

public class HelloServiceImpl implements HelloService{

    public void sayHello(String name) {
        System.out.println("hello"+name);
    }
}

3、测试

import com.linfeng.pojo.HelloService;
import com.linfeng.pojo.HelloServiceImpl;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class MyTest {
    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
       HelloServiceImpl service = new HelloServiceImpl();
        service.sayHello("林峰");

    }
}

在这里插入图片描述
下面我们使用反射机制进行创建sayhello方法,核心Method(类中的方法)

import com.linfeng.pojo.HelloService;
import com.linfeng.pojo.HelloServiceImpl;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class MyTest {
    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
//        HelloServiceImpl service = new HelloServiceImpl();
//        service.sayHello("林峰");

        //下面我们使用反射机制进行创建sayhello方法,核心Method(类中的方法)
        HelloServiceImpl target = new HelloServiceImpl();
        //获取sayhello名称对应的method类
        Method method = HelloService.class.getMethod("sayHello", String.class);//类中的方法,类型
        //通过method可以执行sayhello方法调用
        /*
        invoke是method类中的一个方法,表示执行方法的调用
        参数:
            1、object  ,表示对象的。要执行这个对象的方法
            2、object...args     方法执行时的参数值
         返回值:Object
        * */

        //method.invoke所表达的意思是:执行target对象sayhello方法,参数是林峰
        Object ret = method.invoke(target,"林峰");
                  //method代表sayHello方法,这个方法关联着一个对象,这里我们是target对象
    }
}

class.getMethod
Method method = HelloService.class.getMethod(“sayhello”, String.class,Integer.class);
提出问题?

public Method getMethod(String name, Class<?>... parameterTypes)

加入,该方法的参数有多个该怎么办?
parameterTypes参数是一个类对象数组,按声明的顺序标识方法的形式参数类型。

Method.invoke
public Object invoke(Object obj,Object… args)

  • public Object invoke(Object obj, Object… args)
  •   表示执行方法的调用
    
  • 参数:
  •   1.Object,表示对象,要执行这个对象的方法
    
  •   2.Object...args,方法执行时的参数值
    
  • 返回值:
  •   Object:方法执行后的返回值
    

/*
invoke是method类中的一个方法,表示执行方法的调用
参数:
1、object ,表示对象的。要执行这个对象的方法
2、object…args 方法执行时的参数值
返回值:Object
* */
//method.invoke所表达的意思是:执行target对象sayhello方法,参数是林峰

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值