public class Test
{
public static void main(String[] args) throws ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException
{
Method m= Test.class.getMethod("wish", String.class,String.class,String.class);
m.invoke(null, new String[]{"1","2","3"});
//1.由于方法有多个参数,在这里面,把这三个参数用数组的形式给出
m.invoke(null, new String("a"),new String("b"),new String("c"));
//2.这里也可以不用数组的形式给出
}
public static void wish(String str1,String str2,String str3)
{
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
}
}
但是如果我们要在把wish方法中参数改成时一个数组,该如何进行反射呢?如下:
public class Test
{
public static void main(String[] args) throws ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException
{
Method m= Test.class.getMethod("wish", String[].class);
//m.invoke(null, new String[]{"1","2","3"});这种方法是不行的
//因为new String[]{"1","2","3"},程序会看做是wish方法有3个参数,类型都是string的,而不是把这个数组看做是一个参数
m.invoke(null, (Object)new String[]{"1","2","3"});
//1.强制转换
m.invoke(null, new Object[]{new String[]{"1","2","3"}});
//2.用超类的数组形式,new String[]{"1","2","3"}作为参数数组的第一个元素;
//这李说明,我们在写参数的时候,都可以写成数组的形式。
}
public static void wish(String[] strs)
{
for(String str:strs)
{
System.out.println(str);
}
}
}
分享到:
相关推荐
总结来说,Java反射提供了对数组的动态操作能力,包括创建数组、设置和获取数组元素、以及处理类中声明的数组字段。这种能力使得代码更加灵活,但也增加了潜在的错误风险,因此在使用时应谨慎并充分测试。
总的来说,理解和掌握如何使用Java反射调用接收数组参数的方法,将有助于提升你在面对复杂编程问题时的灵活性和应变能力。通过实践和不断学习,你可以更熟练地运用反射技术,从而在编程中实现更多可能性。
Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个特性使得Java具有了高度的灵活性,常用于框架开发、插件系统、元编程等...
数组反射在处理数组时特别有用,因为Java的数组具有特定的特性。例如,一个基本类型的数组(如`int[]`)不能被赋值给`Object[]`,而引用类型的数组(如`Integer[]`)可以。这是因为基本类型数组实际上是对象,但它们...
Java反射机制笔记 Java反射机制是Java语言中一个强大的功能,它允许程序在运行时检查和修改其自身的结构和行为。通过Java反射机制,我们可以在运行时获取类的信息,包括类的成员变量、方法、构造方法等,并可以动态...
### Java反射机制详解 #### 一、什么是Java反射? Java反射是Java编程语言的一个特性,它允许运行时检查和操作程序结构(类、字段、方法等)。反射的主要用途包括但不限于:动态实例化对象、访问私有成员、调用...
Java 中的反射机制(含数组参数) Java 中的反射机制是一种强大的工具,可以在运行时获取类的内部信息,包括modifiers、superclass、interfaces、fields 和 methods 的所有信息,并可以在运行时改变 fields 的内容...
这篇博客文章“JAVA反射参数传递概略”将深入探讨如何使用反射来处理方法参数,尤其是涉及到参数传递的细节。 首先,让我们理解什么是参数传递。在Java中,有两种基本的参数传递方式:值传递和引用传递。值传递是将...
在 Java 反射机制中,我们可以通过 Method 对象的 invoke 方法来执行某对象的方法,这个方法的返回值是 Object 类型的,可以是基本类型、数组、集合等各种类型。 Java 反射机制提供了一种动态获取类信息和执行对象...
### Java反射机制应用详解 #### 一、Java反射机制简介 Java反射机制是Java语言提供的一种能在运行时分析类信息并动态操作对象的功能。通过反射,我们可以在程序运行期间获取类的信息(如类名、方法名等),创建...
在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作类、接口、字段和方法等对象。枚举(Enumeration)是Java中的一个特殊类类型,用于定义一组常量。本项目"test-enum-demo-...
本文将深入探讨Java反射中的一个关键组件——`Method`,以及如何利用`Class`类的多种方法来获取和操作类的方法。 ### 一、`Method`与`Class`的关系 在Java反射中,`Method`类提供了访问类或接口声明的公共成员方法...
根据提供的文件信息,我们可以深入探讨Java反射机制的基本原理及其应用场景。 ### Java反射机制的基本概念 Java反射机制允许程序在运行时获取类的信息,并且能够直接操作这些信息。这包括类名、方法名称、参数类型...
Java 反射机制详解 Java 反射机制是 Java 语言中一个强大的功能,允许开发者在运行时动态地获取类的信息和调用对象的方法。通过 Java 反射机制,开发者可以在运行时判断任意一个对象所属的类、构造任意一个类的对象...
Java 反射之 Constructor Java 反射机制中的 Constructor 类提供了关于类的单个构造方法的信息,包括对它的访问权限、Class 获取构造函数的方式等。下面将详细讲解 Constructor 类的概述、获取构造函数的方式、构造...
Java反射和泛型是Java编程中的两个重要特性,它们各自为开发者提供了强大的功能,并且在特定情况下可以相互结合使用。本文将深入探讨这两个概念,并通过一个具体的`Testrefl.java`示例来阐述它们的应用。 Java反射...
下面我们将深入探讨如何利用Java反射API实现这些功能。 首先,要使用反射API,我们需要导入`java.lang.reflect`包中的几个关键类:`Class`、`Constructor`、`Method`和`Field`。这些类分别代表类对象、构造器对象、...
### Java反射机制实现JavaBean转JSON的详细解析 #### 一、引言 在现代软件开发过程中,数据格式转换是一项非常常见的任务。特别是在处理不同系统之间的数据交换时,JSON(JavaScript Object Notation)因其轻量级...
通过本文的介绍,我们可以看到Java反射机制的强大之处,它不仅能够帮助我们更好地理解Java的内部机制,还能让我们在实际开发中解决一些复杂问题。掌握了反射机制后,我们就可以更灵活地使用Java进行编程,特别是在...