java反射机制调用带参数的方法_通过Java反射机制调用方法

通过Java反射机制调用方法

//20210204

写在前面:最近再把Java反射和注释知识点过一遍,在这里记一下重要的点,本文讲述反射机制创建对象并调用方法

主要任务:

使用类反射机制实现对象创建以及方法调用

与普通方式实现对象创建以及方法调用,并对比二者区别

程序源代码:

//此处实现String的反射调用,测试方法为equals方法

import java.lang.reflect.Constructor;

import java.lang.reflect.Method;

import java.lang.reflect.Modifier;

public class MethodReflection {

public static void main(String[] args) throws Exception{

String test = new String("hello world");

System.out.println(test.equals("hello world"));

Class st = Class.forName("java.lang.String");

Constructor con = st.getDeclaredConstructor(String.class);//获取有参构造

Object obj = con.newInstance("hello world");

Method[] methods = st.getMethods();

// for (Method method : methods) {

// System.out.println(method.getName()+" "+ Modifier.toString(method.getModifiers()));

// }

System.out.println(methods[0].getName());

Object value = methods[0].invoke(obj,"hello world");

System.out.println(value.toString());

}

}

输出如下:

对比:

使用普通方法

优点:方便

缺点:不灵活,一旦需求改了就需要改源代码

使用反射机制

优点:灵活,可以把关键内容写进配置文件,java文件只是构造一个模板,需求要改的时候更改配置文件即可

缺点:不方便,程序冗长

附录:

小知识点——关于可变长度参数[...]:

Java中,一个方法可以传入不定长度的参数,使用参数类型+‘...’指定即可

例:

//'...'的使用举例

public static void test(String... args){

for(Stirng str : args){

System.out.println(str);//输出传入参数列表

}

}

public static void main(String[] args){

test("hello","world");

}

输出如下:

以上

希望对大家有所帮助

通过Java反射机制调用方法 相关文章

JavaSE_基本语法学习

JavaSE_基本语法学习 1.注释 注释有三种: 1. 单行注释//2. 多行注释/**/3. 文档注释 /** */ 2.标识符与关键字 java所有的组成部分都需要名字. 标识符:类名,变量名以及方法名都被称为标识符 关键字:除类名,变量名以及方法名外,其他基本为关键字 //abstract定

腾讯安全月报丨0误报通过赛可达认证、DDoS威胁报告发布、CASB方案上线……

腾讯智慧城市安全运营中心获IDC推荐,助力城市安全生态加快融通 1月,《IDC特殊研究:中国智慧城市安全运营中心市场洞察》发布,综合呈现了相关建设现状、实践成果、未来趋势及进阶建议。腾讯智慧城市安全运营中心凭借产品技术实力、方案创新能力及业界最佳实

Hutool Java 工具类库导出 Excel,超级简单!

首先在POM.xml中加入GAV dependency groupIdcn.hutool/groupId artifactIdhutool-all/artifactId version5.0.7/version/dependencydependency groupIdorg.apache.poi/groupId artifactIdpoi-ooxml/artifactId version4.1.1/version/dependencydependency gro

JavaScript 代码技巧mark

分享一些我常用的代码优化技巧,希望对你有帮助。 1. 多表达式多 if 判断 我们可以在数组中存储多个值,并且可以使用数组include方法。 1 // 长2 if (x === 'abc' || x === 'def' || x === 'ghi' || x ==='jkl') { //logic}3 // 短4 if (['abc', 'def', 'ghi

【JAVA】之获取CSV文件数据以及获取Excel文件数据

一、获取CSV文件数据 import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import org.testng.SkipException;import org.t

java-response-乱码解决

(1)响应体设置文本 PrintWriter getWriter () 获得字符流,通过字符流的 write ( String s) 方法可以将字符串设置到response 缓冲区中,随后Tomcat会将response缓冲区中的内容组装成Http响应返回给浏览 器端。 关于设置中文的乱码问题 原因:response缓冲区

Java注解和反射笔记

Java注解和反射笔记 1 注解 1.1 定义 Annotation是从JDK1.5开始引入的技术 作用 不是程序本身,可以对程序作出解释 可以被其他程序(编译器等)读取 格式 @注释名,可以添加一些数值 注解可以附加在package,class,method,field上面,可以通过反射机制实现

Java IO 的分类、使用场景、缓冲流、使用例子、文件拷贝

1、什么是IO I/O 是指Input/Output,即输入和输出。 Input指从外部读入数据到内存,例如,把文件从磁盘读取到内存,从网络读取数据到内存等等。 Output指把数据从内存输出到外部,例如,把数据从内存写入到文件,把数据从内存输出到网络等等。 Java程序在执行

10年程序员都不一定搞清楚的文件路径

在 Java 中,文件是很常用的概念,这其中文件路径是一个很基础的内容,因为文件的创建,读取,写入和删除等操作都是依赖于文件路径的。但是你仔细看一下Java中 File 的 API 你会发现有这样三个方法返回路径。 getPath(获取路径) getAbsolutePath(获取绝对

Java代码中的魔法值

1. 前言 重构老代码中遇到了不少类似下面这种写法: public void attend(String value) { if ("0".equals(value)) { //todo } else if ("1".equals(value)) { //todo } else { //todo } } 脑壳疼!从Java语法上无懈可击,但是从业务上却让人无法理解其中 0

你可能感兴趣的:(java反射机制调用带参数的方法_通过Java反射机制调用方法)