`
san_yun
  • 浏览: 2652592 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

java反射调用时,参数是数组的问题

 
阅读更多

method的invoke方法声明如下:
{code}
public Object invoke(Object obj, Object... args)
{code}

如果实际调用的方法参数是数组怎么办?比如下面这段代码会报错:
{code}
public class MBlogServiceImpl {

public List<Blog> queryBlogByIds(Long[] id) {
System.out.println("exe");
return new ArrayList<Blog>();
}
}

MBlogServiceImpl serviceBean = new MBlogServiceImpl();
Long[] params = new Long[]{1l};
Long param = new Long(1);
Method method = serviceBean.getClass().getMethod("queryBlogByIds",params.getClass());
Object obj = method.invoke(serviceBean,params);
System.out.println(obj);
{code}

其实method.invoke这行代码,eclipse编译的时候也会出现黄色警告:
The argument of type Long[] should explicitly be cast to Object[] for the invocation of the varargs method invoke(Object, Object...) from type Method. It could alternatively be cast to Object for a varargs invocation

把数据放在new Object[]{}就好了。
Object obj = method.invoke(serviceBean,new Object[]{params});
分享到:
评论

相关推荐

    Java方法反射调用demo

    调用基本类型数组参数的方法时,情况会稍复杂,因为数组在Java中被视为对象。假设我们有一个接受`int[]`的方法: ```java Method method = MyClass.class.getMethod("myMethodWithIntArray", int[].class); method....

    Java技术对接收数组参数的成员方法进行反射

    总的来说,理解和掌握如何使用Java反射调用接收数组参数的方法,将有助于提升你在面对复杂编程问题时的灵活性和应变能力。通过实践和不断学习,你可以更熟练地运用反射技术,从而在编程中实现更多可能性。

    Java反射调用方法

    在给定的代码中,`TestRef` 类展示了如何使用Java反射调用方法。首先,我们创建了一个 `Foo` 类,它有一个私有字符串成员变量 `msg` 和三个方法:`setMsg`、`getMsg` 和 `outInfo`。`main` 方法是演示反射调用的入口...

    java 反射中操作数组

    总结来说,Java反射提供了对数组的动态操作能力,包括创建数组、设置和获取数组元素、以及处理类中声明的数组字段。这种能力使得代码更加灵活,但也增加了潜在的错误风险,因此在使用时应谨慎并充分测试。

    java反射全解(反射原理+反射API详解+反射与数组+反射与泛型+反射源码与性能开销+反射优缺点+反射与内省)

    数组是 Java 语言中的一种基本数据结构,反射机制可以动态地获取数组的信息和调用数组的方法。 反射与泛型是指在反射机制中如何操作泛型。泛型是 Java 语言中的一种类型参数机制,反射机制可以动态地获取泛型的信息...

    详解java中反射机制(含数组参数)

    Java 中的反射机制(含数组参数) Java 中的反射机制是一种强大的工具,可以在运行时获取类的内部信息,包括modifiers、superclass、interfaces、fields 和 methods 的所有信息,并可以在运行时改变 fields 的内容...

    JAVA反射参数传递概略

    当一个方法声明了变长参数,实际上它会被编译器转化为一个数组参数。例如,`public void printNumbers(int... nums)`会被编译为`public void printNumbers(int[] nums)`。因此,当我们使用反射调用这样的方法时,...

    Java反射方法调用

    处理数组参数时,需要使用`Array`类来创建和初始化数组,然后将数组对象作为参数传递。例如,调用一个接受int[]参数的方法: ```java int[] array = {1, 2, 3}; Method method = clazz.getMethod("yourMethodName",...

    java反射机制学习(四):通过反射执行方法、操作属性、操作数组中的数据

    Java反射机制是Java编程语言中一个强大的特性,它允许运行时动态地获取类的信息并进行操作,如创建对象、调用方法、访问属性以及处理数组等。在本篇讲解中,我们将深入理解如何通过反射来执行方法、操作属性以及处理...

    java 用泛型参数类型构造数组详解及实例

    本文将深入探讨如何在Java中使用泛型参数类型构造数组,并通过实例解析这个问题。 首先,我们需要理解Java泛型的基本概念。泛型是在类、接口和方法声明中引入的一种语法特性,用来指定类型参数,例如`&lt;T&gt;`。这里的`...

    Java反射机制2

    Java反射机制是Java编程语言中的一个强大工具,它允许程序在运行时检查和操作类、接口、对象等的内部信息,包括但不限于类名、方法名、构造器、字段以及它们的元数据。这个机制的核心在于Java.lang.Class类和java....

    Java反射机制笔记(简单易懂)

    通过Java反射机制,我们可以在运行时获取类的信息,包括类的成员变量、方法、构造方法等,并可以动态地调用这些成员变量和方法。 获取Class对象 ---------------- 在Java中,Class对象是反射机制的基础。我们可以...

    Java反射值Method

    本文将深入探讨Java反射中的一个关键组件——`Method`,以及如何利用`Class`类的多种方法来获取和操作类的方法。 ### 一、`Method`与`Class`的关系 在Java反射中,`Method`类提供了访问类或接口声明的公共成员方法...

    java反射简单例子demo

    Java反射是Java编程语言中的一个强大特性,它允许运行时检查类、接口、字段和方法的信息,甚至可以动态地创建对象并调用其方法。在Java中,`java.lang.reflect`包提供了对反射的支持,包括`Class`、`Constructor`、`...

    java反射机制,调用私有方法

    Java反射机制是Java编程语言中的一个强大工具,它允许程序在运行时检查和操作类、接口、字段和方法的信息。这种动态类型的能力使得Java代码能够处理未知或未提前定义的对象,增强了程序的灵活性和可扩展性。在Java中...

    java反射.pdf

    Java反射是Java编程语言的一个特性,它允许运行时检查和操作程序结构(类、字段、方法等)。反射的主要用途包括但不限于:动态实例化对象、访问私有成员、调用方法、获取类的信息等。 #### 二、如何创建反射类? ...

    java反射经典实例

    在本“Java反射经典实例”中,我们将深入探讨这个主题,了解如何利用反射来访问和修改私有属性以及调用私有方法。 1. **反射的概念与用途** - 反射机制是在运行时分析类的能力,它允许我们获取类的信息(如类名、...

    java 通过反射获取枚举类,及枚举类的值,枚举类枚举实例名

    在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作类、接口、字段和方法等对象。枚举(Enumeration)是Java中的一个特殊类类型,用于定义一组常量。本项目"test-enum-demo-...

Global site tag (gtag.js) - Google Analytics