`
波罗诺
  • 浏览: 28676 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

反射 三 反射method

 
阅读更多
/**
* 总结:与获取构造函数的方式类似
*这里用clazz.getMethod(方法名,方法的参数的类型的字节码),来获取方法
*然后通过得到的method.invoke(对象,传进参数值)来调用method
*/
//public void xx1()
@Test
public void test1() throws Exception{

Person p = new Person();
p.xx1();

Class clazz = Class.forName

("cn.itcast.reflect.Person");
Method method = clazz.getMethod("xx1", null);
method.invoke(p, null);

}

@Test
public void test2() throws Exception,

InstantiationException, IllegalAccessException{
String className = "cn.itcast.reflect.Person";
String methodName = "xx1";

Object obj = Class.forName(className).newInstance();
Method m = Class.forName(className).getMethod

(methodName, null);
m.invoke(obj, null);
}


//public String xx1(String name, int arr[])
@Test
public void test3() throws Exception{

Person p = new Person();
Class clazz = Class.forName

("cn.itcast.reflect.Person");
Method method = clazz.getMethod("xx1",

String.class,int[].class);
String returnValue = (String) method.invoke(p,

"aaa",null);
System.out.println(returnValue);
}

//private int[] xx1(List list)
@Test
public void test4() throws Exception{

Person p = new Person();
Class clazz = Class.forName

("cn.itcast.reflect.Person");
Method method = clazz.getDeclaredMethod("xx1",

List.class);
method.setAccessible(true);
int[] arr = (int[]) method.invoke(p, new ArrayList

());
System.out.println(arr);
}

//public static void xx1(Map map)
@Test
public void test5() throws Exception{

Class clazz = Class.forName

("cn.itcast.reflect.Person");
Method method = clazz.getDeclaredMethod("xx1",

Map.class);
method.invoke(null, new HashMap());

}

//public static void main(String[] args)
@Test
public void test6() throws Exception{

Class clazz = Class.forName

("cn.itcast.reflect.Person");
Method method = clazz.getMethod("main",String

[].class);
//method.invoke(null, new Object[]{new String[]

{"1","2"}});
method.invoke(null, (Object)new String[]{"1","2"});
//Method public Object invoke(Object obj,Object...

args)   1.5
//Method public Object invoke(Object obj,Object[]

args)   1.4  main(String s1,String s2)

}
分享到:
评论

相关推荐

    Java反射值Method

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

    java反射机制及Method.invoke解释

    Java 反射机制及 Method.invoke 解释 Java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的...

    反射之操作 Method 成员方法类.md

    反射之操作 Method 成员方法类.md

    java 反射 报错 no such method exception

    ### Java反射机制与NoSuchMethodException详解 在Java编程中,反射是一种强大的机制,允许程序在运行时检查和修改自身结构和行为。然而,当开发者尝试使用反射调用一个不存在的方法时,便会遇到`java.lang....

    java反射与EJBjava反射与EJBjava反射与EJBjava反射与EJBjava反射与EJB

    EJB主要分为三种类型:Session Beans(会话bean)处理客户端请求,Entity Beans(实体bean)表示持久化数据,而Message-driven Beans(消息驱动bean)则用于处理JMS消息。 1. Session Beans:分为Stateful Session ...

    java反射,获取所有属性、方法以及List集合类

    Java反射是Java编程语言中的一个强大工具,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射主要用于在运行时分析类和对象,包括访问私有成员、调用私有方法、创建对象、获取类...

    反射机制反射Dao 反射机制

    反射机制的核心在于`java.lang.reflect`包中的类,如Class、Constructor、Method和Field。标题"反射机制反射Dao"暗示我们将探讨如何使用反射与数据访问对象(DAO)模式相结合。 反射机制允许程序在运行时动态地获取...

    Java反射之Constructor、Method、Field使用及说明

    在深入探讨Java反射机制中`Constructor`、`Method`、`Field`以及`Class`类的使用之前,我们需要先了解反射的基本概念及其重要性。反射是Java的一项强大功能,它允许程序在运行时检查类和对象的结构,甚至可以创建和...

    java反射 java反射 java反射java反射

    Java反射是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并操作类的对象。在Java中,反射机制提供了强大的能力,包括在运行时检查类的结构、创建对象实例、调用方法以及访问和修改字段值。...

    Java方法反射调用demo

    Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个特性使得Java具有了高度的灵活性,常用于框架开发、插件系统、元编程等...

    java反射-英文版反射规范

    #### 三、反射模型 Java反射的核心模型由以下几个部分组成: ##### 1. **Member接口** - `Member` 接口是所有类成员(字段、方法和构造器)的父接口。 - 它提供了一系列获取成员信息的方法,如获取成员名称、...

    反射实例-JAVA反射机制.doc

    三、反射的使用示例 以下是一个简单的示例,展示了如何使用反射获取类的方法: ```java import java.lang.reflect.*; public class ReflectionExample { public static void main(String[] args) { try { ...

    反射实例-JAVA反射机制

    #### 三、反射的优缺点 虽然Java反射提供了强大的功能,但在使用时也需要注意其潜在的问题: - **优点**: - **灵活性**:能够动态地加载和操作类。 - **扩展性**:方便扩展程序的功能。 - **可维护性**:降低...

    java反射机制详解及Method.invoke解释.pdf

    在 Java 反射机制中,有三个主要的类:Class、Method、Field。Class 类表示 Java 中的类,Method 类表示 Java 中的方法,Field 类表示 Java 中的变量。这些类提供了许多方法来获取类、对象、方法、变量等信息。 ...

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

    反射 API 主要包括 Class、Constructor、Method、Field 等类,它们提供了获取类的信息和调用对象的方法的接口。 反射与数组是指在反射机制中如何操作数组。数组是 Java 语言中的一种基本数据结构,反射机制可以动态...

    利用反射给属性赋值

    三、反射赋值的基本步骤 1. 获取Class对象:首先需要得到目标类的Class对象,这可以通过`Class.forName()`方法(传入完全限定类名)或对象的`getClass()`方法完成。 2. 创建对象:使用`Class`对象的`newInstance()...

    C#实现反射调用动态加载的DLL文件中的方法

    ### C#中使用反射调用动态加载的DLL文件中的方法 #### 反射的作用与应用场景 反射是.NET框架中的一项重要技术,它允许程序在运行时动态地获取自身的元数据(如类、方法、属性等)并进行操作。具体而言,反射主要有...

    Java 反射创建get set方法及反射方法的调用

    在给定的代码示例中,我们看到一个名为`PropertyUtil`的工具类,该类提供了三个主要的方法:`getPropertyDescriptor`、`setProperty` 和 `getProperty`。 1. **getPropertyDescriptor** 方法: - 这个方法的作用是...

    android系统java反射机制详解

    反射机制主要涉及三个核心类:Class、Constructor和Method,以及Field。 1. Class类:代表运行时的类信息,可以用来创建对象或获取类的各种属性。 2. Constructor类:代表类的构造器,用于实例化对象。 3. Method类...

    JAVA反射详细讲解

    三、反射的优缺点 优点: - 提高代码的灵活性,适应需求变化。 - 实现动态加载和配置,减少代码耦合。 - 动态创建和调用对象,简化复杂操作。 缺点: - 性能开销:反射操作比直接调用方法慢,因为需要额外的类型...

Global site tag (gtag.js) - Google Analytics