「java反射方法参数值」反射获取方法的参数类型
今天给各位分享java反射方法参数值的知识,其中也会对反射获取方法的参数类型进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、请问怎么利用java反射给方法的行参赋值
- 2、JAVA反射中通过Class.forname()如何带参数的方法怎么赋值和调用呀?
- 3、java 反射数组参数方法 如何反射
- 4、java 通过反射怎么获取方法中参数值
请问怎么利用java反射给方法的行参赋值
import java.lang.reflect.Method;
public class Test
{
public int add(int param1, int param2)
{
return param1 + param2;
}
public String echo(String message)
{
return "hello: " + message;
}
public static void main(String[] args) throws Exception
{
/** 常规方法,先生成对象,然后通过对象的引用来调用相应的方法 */
// Test test = new Test();
// System.out.println(test.add(1, 2));
// System.out.println(test.echo("tom"));
/** 通过反射的方式 */
//获取类的class对象
Class? classType = Test.class;
//生成class对象的实例
Object test = classType.newInstance();
//获取method对象
Method addMethod = classType.getMethod("add", new Class[] { int.class,
int.class });
//调用invoke方法,传入要调用方法所对应的class对象, 传入实参
Object result = addMethod.invoke(test, new Object[]{1, 2});
System.out.println((Integer)result);
System.out.println("---------------------");
//以下同理
Method echoMethod = classType.getMethod("echo", new Class[]{String.class});
Object result2 = echoMethod.invoke(test, new Object[]{"tom"});
System.out.println((String)result2);
}
}
通过例子来给你讲解,希望采纳
JAVA反射中通过Class.forname()如何带参数的方法怎么赋值和调用呀?
用Class.forName方法动态加载构造方法带参数的类。
1、在用Class.forName方法动态加载构造方法带参数的类时,为了将参数传递进去,可以考虑java的反射机制,比如有一个类如下:
public class Cat{
private int age;
private String name;
public void Cat(String name, int age){
this.name = name;
this.age = age;
}
}
2、如果想用Class.forName方法动态加载这个类,可以用以下类似的代码实现:
import java.lang.reflect.Constructor;
publc class LoadCat{
private int age;
private String name;
public void LoadCat(String name, int age){
super();
this.name = name;
this.age = age;
}
public static void main(String args[ ]){
Class clazz = Class.forName("Cat");
Constructor constructor = clazz.getConstructor(String.class, int.class);
LoadCat test = (LoadCat) constructor.newInstance("test", 1);
}
}
3、补充:
(1)反射方式调用对象类的由参构造方法!
(2)调用者与被调用者不在同包中(SpecialCalendar位于Calendar包中)
调用者使用Class.forName()方法,应该显示的注明路径(包名)
Class? special = Class.forName("Calendar.SpecialCalendar");
Constructor? special_Calendar =
special.getConstructor(int.class,int.class,int.class);
specialCalendar = (SpecialCalendar)
special_Calendar.newInstance(2011,5,27);
4、方法二:
package com.sanmao10;import java.lang.reflect.Constructor;public class test2 {
/**
* ###27.05_反射(通过反射获取带参构造方法并使用)
* Constructor
* Class类的newInstance()方法是使用该类无参的构造函数创建对象, 如果一个类没有无参的构造函数,
* 就不能这样创建了,可以调用Class类的getConstructor(String.class,int.class)
* 方法获取一个指定的构造函数然后再调用Constructor类的newInstance("张三",20)方法创建对象*/
public static void main(String[] args) throws Exception{
Class clazz=Class.forName("com.sanmao10.Person");// Person p=(Person)clazz.newInstance(); //通过无参构造创建对象// p.say();
Constructor c=clazz.getConstructor(String.class,int.class);//获取有参构造
Person p=(Person) c.newInstance("sanmao",12); //通过有参构造创建对象
p.say();
}
}
java 反射数组参数方法 如何反射
1)Reflection 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说“自审”,并能直接操作程序的内部属性。Java 的这一能力在实际应用中也许用得不是很多,但是在其它的程序设计语言中根本就不存在这一特性。例如,Pascal、C 或者 C++ 中就没有办法在程序中获得函数定义相关的信息。
2)考虑下面这个简单的例子,让我们看看 reflection 是如何工作的。
import java.lang.reflect.*;
public class DumpMethods {
public static void main(String args[]) {
try {
Class c = Class.forName(args[0]);
Method m[] = c.getDeclaredMethods();
for (int i = 0; i m.length; i++)
System.out.println(m[i].toString());
} catch (Throwable e) {
System.err.println(e);
}
}
}
按如下语句执行:
java DumpMethods java.util.Stack
它的结果输出为:
public java.lang.Object java.util.Stack.push(java.lang.Object)
public synchronized java.lang.Object java.util.Stack.pop()
public synchronized java.lang.Object java.util.Stack.peek()
public boolean java.util.Stack.empty()
public synchronized int java.util.Stack.search(java.lang.Object)
3)反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。这一概念的提出很快引发了计算机科学领域关于应用反射性的研究。它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩。其中LEAD/LEAD++ 、OpenC++ 、MetaXa和OpenJava等就是基于反射机制的语言。最近,反射机制也被应用到了视窗系统、操作系统和文件系统中。
java 通过反射怎么获取方法中参数值
id只是形参,调用函数的时候传进去的才是实参
也就是你使用这个函数传进去的具体的值,这是你自己传进去的
java反射方法参数值的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于反射获取方法的参数类型、java反射方法参数值的信息别忘了在本站进行查找喔。
发布于:2022-12-14,除非注明,否则均为
原创文章,转载请注明出处。