这篇文章主要介绍了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,有参的方法需要指定参数类型

repay2.invoke(userEntity,"小飞",5000);//执行还钱方法,有参传参

}

}

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

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

java 反射 对象的方法_java通过反射创建对象并调用方法相关推荐

  1. java判断对象无数据_java利用反射机制判断对象的属性是否为空以及获取和设置该属性的值...

    1.java利用反射机制判断对象的属性是否为空: Map validateMap = new LinkedHashMap(); validateMap.put("serial", ...

  2. java 反射调用方法_java的反射机制,以及通过反射获取方法,变量等操作

    我们应用会用到反射这个知识点,肯定是想要在运行时得到类的信息,根据类的那些信息去做一些特定的操作.那么,首先无疑就是得到类的信息,在JDK中提供了Class对象来保存类的信息.所以,反射的第一步就是得 ...

  3. Java 中使用反射来创建对象、调用方法

    Java 中使用反射来创建对象.调用方法 反射创建对象 反射调用方法 反射调用私有方法 反射调用可变参私有方法 反射调用的方法自身可以抛出异常的情形   假设已有下面的类: import java.l ...

  4. Atitit.编程语言原理---方法重载的实现与设计 调用方法的原理

    Atitit.编程语言原理---方法重载的实现与设计 调用方法的原理 1. 重载包括:普通方法的重载和构造方法的重载 1 1.1. 横向重载"和"纵向重载"1 1.2.  ...

  5. C#利用方法重载实现2个整数,2个双精度数,3个整数中求最大值。由于设计了方法重载,系统会根据调用方法时传递的实参类型和个数而自动选择相应的方法来求最大数。

    1.题目要求如下: C#利用方法重载实现2个整数,2个双精度数,3个整数中求最大值.由于设计了方法重载,系统会根据调用方法时传递的实参类型和个数而自动选择相应的方法来求最大数. 2.来吧展示,代码如下 ...

  6. java 反射 找不到方法_Java获取反射的三种方法

    class Student { private int id; String name; protected boolean sex ; pub1ic f1oat score; } pub1ic cl ...

  7. 反射java调用方法_java 使用反射调用方法

    每个Method的对象对应一个具体的底层方法.获得Method对象后,程序可以使用Method里面的invoke方法来执行该底层方法. Object invoke(Object obj,Object ...

  8. java 反射获取实体类_Java 通过反射给实体类赋值操作

    表单提交这个方法是挺方便的,但在java来说就显得有些麻烦了, 怎么个麻烦呢,就是当你字段多的时候,你就得一个一个的获取其对应的值,这样代码量就多了起来,其代码量不说,维护也是一个问题. 所以就有了这 ...

  9. java 反射获取修饰符_java之反射和BeanUtils类

    反射和BeanUtils类 1. 类的初始化:类什么什么情况下会加载到内存中 只要类加载到内存中,那么类加载器就会为这个类创建一个class文件对象 2. javaBean:数据库中的表和java中的 ...

最新文章

  1. python中的module
  2. 【优化3】非线性优化
  3. elinput内容过长显示悬浮框_element ui el-table 表头自定义,内容超出省略,悬浮时显示...
  4. 防火墙安装的十步骤,加强网络第一道保护屏
  5. python 漂亮界面demo_在这个什么都看脸的时代,如何用 GUI 提高 python 程序的颜值?...
  6. MinIO多租户(Multi-tenant)部署指南
  7. 一个ip对应多个域名多个ssl证书配置-Nginx实现多域名证书HTTPS
  8. Linux Shell编程 - 正则表达式
  9. 知易游戏开发教程cocos2d-x移植版
  10. 在输入文本框中获取值
  11. 如何优雅的统计代码耗时?
  12. 《西游记》中的未解之谜,经典之至
  13. 自动化测试qq空间登录
  14. android 点滴
  15. (PTA)数据结构(作业)6、队列
  16. c语言rewind函数作用,C语言中的setlinebuf()、utmpname()、rewind函数使用
  17. nagios分布式监控中心服务器迁移(使用nsca)
  18. 华为云构建“好用的化工数字化”
  19. 语音处理/语音识别基础(三)- 声音的特征和声音的能量
  20. 基于密度的聚类方法-OPTICS

热门文章

  1. 为什么专业领域里外行领导能让墙倒屋塌?
  2. js,提示,eclipse
  3. 图像配准(Image Registration)——深度学习方法
  4. 极光推送的设备唯一性标识 RegistrationID
  5. 通过C#生成支付宝收款码 二 (支付宝沙箱版配置)
  6. 品达物流TMS项目_第11章 TMS司机端、快递员端开发
  7. CMakeLists.txt V2.0
  8. Docker 基础知识 - 使用绑定挂载(bind mounts)管理应用程序数据
  9. jenkins jod迁移
  10. 唯一摩尔斯密码词 leetcode Java篇