「java反射无参」java反射method invoke

博主:adminadmin 2023-03-23 03:25:07 308

本篇文章给大家谈谈java反射无参,以及java反射method invoke对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java反射调用无参方法的问题

java.lang.Class.getDeclaredMethod()方法用法

注:方法返回一个Method对象,它反映此Class对象所表示的类或接口的指定已声明方法。

描述

java.lang.Class.getDeclaredMethod()方法返回一个Method对象,它反映此Class对象所表示的类或接口的指定已声明方法。

name 参数是一个字符串,指定所需的方法的简单名称,

parameterTypes 参数是一个数组的Class对象识别方法的形参类型,在声明的顺序

参数

name -- 方法的名称

parameterTypes -- 参数数组

返回值

匹配指定名称和参数的类的方法,此方法返回的Method对象

异常

NoSuchMethodException -- 如果匹配方法未找到

NullPointerException -- 如果name 为 null.

SecurityException -- If a security manager, s, is present.

实例

如何使用java.lang.Class.getDeclaredMethod()方法

invoke调用类中方法,所以会执行a方法。。

为什么Java反射对象必须有一个无参数的构造方法?

其实也可以不提供,只不过这样的话构造对象的时候一定要先拿到有参数的构造方法,然后赋予参数再构建对象。

比如

package cn.mldn.demo;

import java.lang.reflect.Constructor;

class Person

{ // CTRL + K

private String name;

private int age;

public Person(String name, int age)

{

this.name = name;

this.age = age;

}

@Override

public String toString()

{

return "Person [name=" + name + ", age=" + age + "]";

}

}

public class TestDemo

{

public static void main(String[] args) throws Exception

{

Class? cls = Class.forName("cn.mldn.demo.Person"); // 取得Class对象

// 取得指定参数类型的构造方法

Constructor? cons = cls.getConstructor(String.class, int.class);

Object obj = cons.newInstance("张三", 20); // 为构造方法传递参数

System.out.println(obj);

}

}

java 反射 调用无参数方法?

通过Java反射调用无参数方法,这是个测试用的例子,通过反射调用对象的方法,代码如下:

import java.lang.reflect.Method; 

import java.lang.reflect.InvocationTargetException; 

/** 

* Created by IntelliJ IDEA. 

* File: TestRef.java 

* User: Administrator

* Date: 2015-7-10 16:28:44 

*/ 

public class TestRef { 

    public static void main(String args[]) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException { 

        Foo foo = new Foo("这个一个Foo对象!"); 

        Class clazz = foo.getClass(); 

        Method m1 = clazz.getDeclaredMethod("outInfo"); 

        Method m2 = clazz.getDeclaredMethod("setMsg", String.class); 

        Method m3 = clazz.getDeclaredMethod("getMsg"); 

        m1.invoke(foo); 

        m2.invoke(foo, "重新设置msg信息!"); 

        String msg = (String) m3.invoke(foo); 

        System.out.println(msg); 

    } 

class Foo { 

    private String msg; 

    public Foo(String msg) { 

        this.msg = msg; 

    } 

    public void setMsg(String msg) { 

        this.msg = msg; 

    } 

    public String getMsg() { 

        return msg; 

    } 

    public void outInfo() { 

        System.out.println("这是测试Java反射调用无参数方法的测试类"); 

    } 

}

控制台输出结果:

这是测试Java反射调用无参数方法的测试类 

重新设置msg信息! 

Process finished with exit code 0

java反射 获取无参 构造函数和method 以及参数是 String[]的时候怎么写?

构造函数和method类似,介绍一下获取method的方法。首先定义个类,里面定义两个方法。

public class TestRflectionFather {

public void showarray(String[] str){

for(String ss:str){

System.out.println(ss);

}

}

public void showarray(){

System.out.print("this is no param method");

}

}

获取并运行String[]为参的方法

import java.lang.reflect.Method;

public class Testmain {

public static void main(String[] args) throws Exception {

Class clazz = Class.forName("TestRflectionFather");

Object fa= clazz.newInstance();

Class[] cla = new Class[1];

Object[] obj= new Object[1];

String[] str ={"aaa","bbb","ccc"};

cla[0]=String[].class;

Method me=clazz.getMethod("showarray", cla);

obj[0]=str;

me.invoke(fa, obj);

}

}

获取并运行无参的方法

import java.lang.reflect.Method;

public class Testmain {

public static void main(String[] args) throws Exception {

Class clazz = Class.forName("TestRflectionFather");

Object fa= clazz.newInstance();

Method me=clazz.getMethod("showarray");

me.invoke(fa);

}

}

Java反射为什么需要无参构造函数

,因为反射可以理解为Java中的解剖学,首先得先获取到Class对象,然后才可以分别获取到类中的内容(构造方法、成员变量和成员方法等),你要获取对象,那就是要定义的对象,所以就需要空参构造...

java反射无参的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java反射method invoke、java反射无参的信息别忘了在本站进行查找喔。

The End

发布于:2023-03-23,除非注明,否则均为首码项目网原创文章,转载请注明出处。