「java反射无参」java反射method invoke
本篇文章给大家谈谈java反射无参,以及java反射method invoke对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java反射调用无参方法的问题
- 2、为什么Java反射对象必须有一个无参数的构造方法?
- 3、java 反射 调用无参数方法?
- 4、java反射 获取无参 构造函数和method 以及参数是 String[]的时候怎么写?
- 5、Java反射为什么需要无参构造函数
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反射无参的信息别忘了在本站进行查找喔。
发布于:2023-03-23,除非注明,否则均为
原创文章,转载请注明出处。