JAVA反射中通过Class.forname()如何带参数的方法怎么赋值和调用呀?
发布网友
发布时间:2022-05-29 08:48
我来回答
共5个回答
热心网友
时间:2023-10-13 08:02
没明白你说的什么意思。Class.forname()获取类。如果想调用这个类的带参数的方法:
String clsstr = "package.classname";
Class t = Class.forName(clsstr); //获取所给包名下的类
t.newInstance();//实例化获取的类
Method method = t.getMethod("methodName",String.class);//获取方法名称为methodName,参数为一个String类型的公有方法
method.invoke(t,"display");//调用此带有一个String参数的函数
上图:
热心网友
时间:2023-10-13 08:03
要调用带参数的方法invoke方法举个例子:package com;
import java.lang.reflect.Method;
public class InvokeMethod {
public static void main(String args[]){
try
{
//动态加载Student类
Class student = Class.forName("com.Student");
//获取Student类名称为printInfo的方法
Method method1 = student.getMethod("printInfo");
//调用printInfo方法
method1.invoke(student.newInstance());
//获取Student类名称为printInfo的方法,String.class是方法的参数类型
Method method2 = student.getMethod("printAddress",String.class);
//调用printAddress方法,其中HK是为方法传递一个参数值
method2.invoke(student.newInstance(),"hello关知红");
}catch(Exception e)
{
e.printStackTrace();
}
}
}
热心网友
时间:2023-10-13 08:03
类的全路径唯一确定一个类,在动态环境下,还需要制定对应的classloader。
例如
try
{
Class foo = Class.forName("com.foo.bar");
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
热心网友
时间:2023-10-13 08:04
http://zhidao.baidu.com/question/7331190.html 看下这个
热心网友
时间:2023-10-13 08:04
public class Test {
public static void main(String[] args) {
try {
Class<?> t = Class.forName("test.Test");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}