`

通过反射方式来调用某个对象的方法的步骤

    博客分类:
  • J2SE
阅读更多
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

public class DemoTest2
{
    public DemoTest2(String s1, String s2)
    {
        System.out.println(s1);
        System.out.println(s2);
    }
    
    public void output(String str)
    {
        System.out.println("hello: " + str);
    }
    
    @SuppressWarnings("unchecked")
    public static void main(String[] args)throws Exception
    {
        
       // 1. 得到该对象所对应的Class对象
       Class<DemoTest2> clazz = DemoTest2.class;
        
       //2. 通过该Class对象得到该类的构造方法所对应的Constructor对象
        Constructor cons = clazz.getConstructor(new Class[]{String.class, String.class});
                
        //3. 通过该Constructor对象的newInstance方法得到该类的一个实例(对象)
        DemoTest2 test = (DemoTest2)cons.newInstance(new Object[]{"abc","xyz"});
       
        //4. 通过该Class对象得到该方法所对应的Method对象
        Method method = clazz.getMethod("output",new Class[]{String.class});
        
        //5. 通过该Method对象的invoke方法进行调用
        method.invoke(test,new Object[]{"zhangsan"});
        
        
        //new DemoTest2().output("zhangsan");
    }
}

分享到:
评论

相关推荐

    frida反射调用对象中的方法与字段.pdf

    当需要使用反射调用某个对象的方法或访问其字段时,可以通过Frida的`Java.use`方法获取到对应的类的代理对象,然后通过调用其方法来实现。例如,在Frida脚本中可以使用`classObject.getDeclaredField("fieldName")....

    JAVA反射机制的入门代码

    1. **获取`Class`对象**:通过`Class.forName("类名")`或`某个对象.getClass()`获取`Class`对象,例如: ```java Class&lt;?&gt; clazz = Class.forName("com.example.YourClassName"); ``` 2. **创建对象**:使用`...

    WinForm窗体间事件调用

    这通常涉及编写一个方法来响应事件的触发。例如: ```csharp private void OnBtnSureForDiaryClick(object sender, EventArgs e) { if (this.txtTitle.Text == "") { MessageBox.Show("请输入标题!", "提示", ...

    java_经典Socket编程_反射

    而对于反射,我们深入探讨了如何通过反射机制获取类、属性、方法和构造器的信息,并展示了如何利用反射来创建对象、访问属性和调用方法。通过这些知识点的学习,读者将能够更好地理解和应用Java语言中的高级特性。

    HardwareInformation_反射_

    对于硬件信息的获取,开发者可能会使用反射调用操作系统或特定库提供的API,这些API能够暴露计算机的硬件配置,如CPU型号、内存大小、硬盘信息、网络设备等。 以下是一些使用反射获取硬件信息的关键步骤: 1. **...

    Java反射机制

    2. 调用方法:使用Method对象的invoke()方法来调用对象的方法。例如: ```java Method method = object.getClass().getMethod("methodName", paramTypes); Object result = method.invoke(object, params); ``` ...

    利用反射给属性赋值

    通过反射,我们可以在运行时动态地创建对象、调用方法、访问或修改属性,甚至可以发现并处理未知类型的对象。 二、反射的使用场景 1. 动态加载类:在不提前知道具体类名的情况下,可以根据配置文件或用户输入动态...

    Android平台与Web服务数据交互时运用Java反射机制解析数据的研究.pdf

    ③最后是使用反射机制来调用对象的方法和字段。 在Android平台上,使用Java反射机制可以实现域对象信息的动态解析,并封装成JavaBean类供应用程序使用。这种机制可以减少代码的重复和增加代码的复用,并提高数据...

    动态加载菜单和反射Show出窗口

    在这种情况下,可能是调用某个方法来显示窗口。 4. 处理异常:反射操作可能会抛出异常,因此需要捕获并处理可能出现的ClassNotFoundException、IllegalAccessException、InstantiationException等。 结合动态加载...

    Java语言的反射机制.pdf

    获取某个类或某个对象所对应的Class对象常用的3种方式: (1) 使用Class类的静态方法forName:Class.forName(“java.lang.String”); (2) 使用类的.class语法:String.class; (3) 使用对象的getClass()方法:...

    利用Java的反射与代理实现IOC模式

    反射机制使得开发者能够在运行时动态地创建对象、调用方法、访问字段,以及发现类的元数据。通过反射,我们可以实现对未知类型的对象进行操作,增强代码的灵活性和可扩展性。 在Java中,`java.lang.Class`是所有类...

    安卓逆向学习笔记之FART主动调用组件设计和源码分析.docx

    4. **反射技术**:利用Java反射机制获取目标类的方法和字段信息,并通过调用这些方法或访问这些字段来实现对应用的动态修改。 5. **Class Loader的修正**:由于不同的应用可能使用不同的ClassLoader来加载类,因此...

    动态代理设置监听DEMO

    在Android中,动态代理通常用于拦截方法调用,添加额外的行为,比如在调用某个方法前后添加事件处理或逻辑。 首先,我们需要了解Java的InvocationHandler接口。当通过动态代理调用目标对象的方法时,实际的调用会被...

    Java动态代理ReflectProxyDemo

    代码中会展示如何使用`Proxy.newProxyInstance()`创建代理对象,并通过这个代理对象调用接口方法,实际执行的是我们自定义的`invoke()`方法。 6. **应用场景** 动态代理在很多场景下都有用武之地,如: - AOP...

    winfrom 动态菜单和反射

    在C#中,我们可以通过以下步骤来实现动态菜单: 1. **创建菜单条对象**:首先,我们需要实例化一个`MenuStrip`对象,这是WinForms中的菜单栏控件。 ```csharp MenuStrip menuStrip = new MenuStrip(); ``` 2. **...

    day15-类加载器&反射&模块化1

    反射是指在运行时去获取一个类的变量和方法信息,然后通过获取到的信息来创建对象,调用方法的一种机制。由于这种动态性,可以极大的增强程序的灵活性,程序不用在编译期就完成确定,在运行期仍然可以扩展。 2.2 ...

    .net 反射应用

    3. 访问成员:有了对象实例,就可以通过`Type`对象的`GetMethod()`, `GetProperty()`, `GetField()`等方法获取成员信息,然后通过`Invoke()`方法调用方法或访问属性。 4. 动态调用:反射还允许我们传递动态参数,这...

    java反射原理

    通过上述方法获取到`Class`对象后,就可以调用各种反射方法来获取类的信息并进行操作了。 #### 三、反射的实际应用场景 反射在Java中有着广泛的应用场景,例如: - **动态代理**:利用反射可以在运行时动态生成...

Global site tag (gtag.js) - Google Analytics