java通过反射创建对象并调用方法

 更新时间:2020年01月09日 16:51:44   作者:戈博折刀  
这篇文章主要介绍了java通过反射创建对象并调用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了java通过反射创建对象并调用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

1.用户类

package com.lf.entity;

import com.lf.annotation.SetProperty;
import com.lf.annotation.SetTable;

public class UserEntity {
  private String userName;
  private int userAge;
  
  private final int money = 10000;
  
  public String getUserName() {
    return userName;
  }
  public void setUserName(String userName) {
    this.userName = userName;
  }
  public int getUserAge() {
    return userAge;
  }
  public void setUserAge(int userAge) {
    this.userAge = userAge;
  }
  //借钱方法
  public int getMoney(){
    System.out.println("你借了 " + money + "元!");
    return money;
  }
  //还钱方法,单个参数
  public void repay(int money){
    System.out.println("你还了 " + money + "元!");
  }
  //还钱方法,多个参数
  public void repay(String userName,int money){
    System.out.println(userName+ " 还了 " + money + "元!");
  }
}

2.测试类

package com.lf.test;

import java.lang.reflect.Method;

import com.lf.entity.UserEntity;

public class Reflection {


  //反射调用方法获取返回值
  //第一种方法,获取对象,直接通过对象调用方法
  //第二种方法,通过方法名获取方法,执行方法
  public static void main(String[] args) throws Exception {
    Class<?> userClass = Class.forName("com.lf.entity.UserEntity");
    UserEntity userEntity = (UserEntity) userClass.newInstance();

    //第一种方法
    System.out.println("第一次借钱:");
    int money = userEntity.getMoney();
    System.out.println("实际拿到钱为: " + money);
    System.out.println("------------------------分割线------------------------");

    //第二种方法,(无参的示例:借钱)
    System.out.println("第二次借钱:");
    Method getMoney = userClass.getMethod("getMoney");//得到方法对象
    Object money2 = getMoney.invoke(userEntity);//调用借钱方法,得到返回值
    System.out.println("实际拿到钱为:" + money2);
    System.out.println("------------------------分割线------------------------");

    //第二种方法,(单个参数的示例:还钱)
    System.out.println("第一次还钱:");
    Method repay1 = userClass.getMethod("repay",int.class);//得到方法对象,有参的方法需要指定参数类型
    repay1.invoke(userEntity,3000);//执行还钱方法,有参传参
    System.out.println("------------------------分割线------------------------");

    //第二种方法,(单个参数的示例:还钱)
    System.out.println("第二次还钱:");
    Method repay2 = userClass.getMethod("repay", String.class,int.class);//得到方法对象,有参的方法需要指定参数类型
    repay2.invoke(userEntity,"小飞",5000);//执行还钱方法,有参传参


  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Mybatis3 if判断字符串变态写法

    Mybatis3 if判断字符串变态写法

    这篇文章主要介绍了Mybatis3 if判断字符串变态的写法,非常不错,具有参考借鉴价值,需要的朋友参考下
    2017-01-01
  • Java AES加密和解密教程

    Java AES加密和解密教程

    这篇文章主要介绍了Java AES加密和解密的相关资料,帮助大家更好的理解和学习Java,感兴趣的朋友可以了解下
    2020-12-12
  • SpringBoot项目集成依赖Mybatis步骤

    SpringBoot项目集成依赖Mybatis步骤

    在本篇文章中小编给大家分享了关于SpringBoot项目如何集成依赖Mybatis的相关知识点内容,有兴趣的朋友们学习下。
    2019-06-06
  • Springmvc conver实现原理及用法解析

    Springmvc conver实现原理及用法解析

    这篇文章主要介绍了Springmvc conver实现原理及用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • Spring Boot 利用注解方式整合 MyBatis

    Spring Boot 利用注解方式整合 MyBatis

    这篇文章主要介绍了Spring Boot 利用注解方式整合 MyBatis,文章围绕主主题的相关资料展开详细的内容介绍,需要的小伙伴可以参考一下
    2022-05-05
  • java streamfilter list 过滤的实现

    java streamfilter list 过滤的实现

    Java Stream API中的filter方法是过滤List集合中元素的一个强大工具,可以轻松地根据自定义条件筛选出符合要求的元素,本文就来介绍一下java streamfilter list 过滤的实现,感兴趣的可以了解一下
    2025-03-03
  • java多线程编程之向线程传递数据的三种方法

    java多线程编程之向线程传递数据的三种方法

    在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别。由于线程的运行和结束是不可预料的,因此,在传递和返回数据时就无法象函数一样通过函数参数和return语句来返回数据
    2014-01-01
  • Java Annotation Overview详解

    Java Annotation Overview详解

    这篇文章主要介绍了Java Annotation Overview,需要的朋友可以参考下
    2014-02-02
  • SpringBoot任务之详解邮件任务

    SpringBoot任务之详解邮件任务

    今天给大家整理的文章是SpringBoot邮件任务的相关知识点,文中有非常详细的介绍及代码示例,对正在学习SpringBoot任务的小伙伴们很有帮助,需要的朋友可以参考下
    2021-06-06
  • java  常见位逻辑运算符梳理

    java  常见位逻辑运算符梳理

    这篇文章主要介绍了java常见位逻辑运算符梳理,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参一下下面文章详细内容
    2022-08-08

最新评论