method.invoke(...)反射点

import java.lang.reflect.Method;
import java.util.Arrays;

/**
 * @Author: hoobey
 * @Description:
 * @Date: Created in 9:35 2018/1/6
 * @Modified By:
 * method.invoke(方法底层所属对象/null,new Object[]{实际参数})
 */
public class ClientInvoke {
/*反射调方法时无论是静态/非静态,固定/可变参数,都有Object对象数组对参数进行包装
* */
    public static void main(String[] args) throws Exception {
        Class<User> clas = User.class;
        Method m = clas.getMethod("method", String[].class);
        m.invoke(null, new Object[]{new String[]{"aa", "bb", "cc"}});//静态方法可省略对象,直接用null替代,或用clas

        m = clas.getDeclaredMethod("method", int[].class);//非public方法要用declared获取
        m.setAccessible(true);//非public方法需要设置为可访问
        m.invoke(clas.newInstance(), new int[]{1, 2, 3, 4, 3, 2, 1});//非静态方法需要提供底层的类对象
    }
}

class User {
    public static void method(String... strings) {
        System.out.println(Arrays.toString(strings));
    }

    private void method(int... ints) {
        System.out.println(Arrays.toString(ints));
    }
}

原文地址:https://www.cnblogs.com/hoobey/p/8213401.html

时间: 2024-08-10 18:10:06

method.invoke(...)反射点的相关文章

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

JAVA反射机制 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制.Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类:在运行时构造任意一个类的对象:在运行时判断任意一个类所具有的成员变量和方法:在运行时调用任意一个对象的方法:生成动态代理.1. 得到某个对象的属性 public Object getProperty(Obje

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

JAVA反射机制 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制.Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类:在运行时构造任意一个类的对象:在运行时判断任意一个类所具有的成员变量和方法:在运行时调用任意一个对象的方法:生成动态代理.1. 得到某个对象的属性 Java代码   public Object getProp

java反射机制之Method invoke执行调用方法例子

昨天在群里跟大家讨论了下java反射调用可变参数的问题,这个问题起因是我们需要反射调用另一个部门提供的方法,我同事说java不能反射调用可变参数的方法,于是我写了个demo证明了他这个观点的错误.但是测试过程中,有一点我不明白,就是反射调用可变参数的方法时,为什么一定要保证传入的参数数组长度为1,在群里跟大家讨论了很多,没有得到确切的答案,参照网上大牛写的东西和我自己跟源码的过程,记录如下: 1.两个类,一个父类,一个子类 [java] view plain copy print? packag

JAVA进阶之旅(二)——认识Class类,反射的概念,Constructor,Fiald,Method,反射Main方法,数组的反射和实践

JAVA进阶之旅(二)--认识Class类,反射的概念,Constructor,Fiald,Method,反射Main方法,数组的反射和实践 我们继续聊JAVA,这次比较有意思,那就是反射了 一.认识Class类 想要反射,你就必须要了解一个类--Class,我们知道,java程序中的各个java类都属于同一事物,我们通常用Classliability描述对吧,反射这个概念从JDK1.2就出来了,历史算是比较悠久了,这个Class可不是关键字哦,这个是一个类,他代表的是一类事物: 我们归根结底就

获取调用者Class和method、反射获取get方法、获取注解信息

调用者Class 及 method StackTraceElement stacks[] = Thread.currentThread().getStackTrace(); for (StackTraceElement stack : stacks) { String className = stack.getClassName(); if (className.contains("com.upsoft") && className.contains("Con

(转)Java.lang.reflect.Method invoke方法 实例

背景:今天在项目中用到Method 的invoke方法,但是并不理解,查完才知道,原来如此! import java.lang.reflect.Method; /** * Java.lang.reflect.Method invoke方法 实例 * 程序中配置文件中有对实体对象的get,set方法的描述,通过应用invoke()方法调用实体对象的method方法 return * m_oGetter.invoke(oSrc, null); oSrc为实体对象,Method m_oGetter *

利用method.invoke(..)解析json

//调用 iniJSONObject(Person.class.getName(), createJSONObject()); iniJSONObject2(World.class.getName(), createJSONObject2()); /** * 只是一个普通的对象 * * @param name *            (包名+类名) * @return */ private Object iniJSONObject(String name, JSONObject jsonObj

【java】method.invoke(方法底层所属对象/null,new Object[]{实际参数})

反射调方法时无论是静态/非静态,固定/可变参数,都有Object对象数组对参数进行包装. 1 package com.tn.clas; 2 3 import java.lang.reflect.Method; 4 import java.util.Arrays; 5 6 public class Client { 7 public static void main(String[] args) throws Exception { 8 Class<User> clas=User.class;

About use Runtime Method Invoke and Runtime Source Code Compliation

1. using System.Reflection; using System.Security.Permissions; namespace SystemReflectionEx { Class Test { string ModuleName = "TestAssembly.dll"; string TypeName = "TestClass"; string MethodName = "TestMethod"; Module [] myM