⑴ java反射中通过Class.forname()如何带参数的方法怎么赋值和调用呀
要调用带参数的方法方法举个例子: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();
}
}
}
⑵ Java反射赋值会调用set方法吗
不会。set/get方法只是javaBean的规范,用来统一管理Bean属性的赋值操作。
⑶ java如何用反射给对象赋值
java用反射给对象赋值的方法:
主程序:
⑷ JAVA反射中通过Class.forname()如何带参数的方法怎么赋值和调用呀
用Class.forName方法动态加载构造方法带参数的类。
⑸ java反射给字段赋值就是给实体类的set赋值,怎么做
packagecom.test;
importjava.lang.reflect.Field;
publicclassA{
privateStringname;
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicstaticvoidmain(String[]args){
try{
Class<A>c=A.class;
Fieldfield=c.getDeclaredField("name");//获取内字段
Objectobj=c.newInstance();//实例容化对象
field.set(obj,"aaa");//为字段赋值
System.out.println(field.get(obj));
}catch(Exceptione){
e.printStackTrace();
}
}
}
⑹ java 反射 能直接对私有属性赋值么不通过set方法
设置
A a = new A();
Field field = a.getClass().getDeclaredField("x");
field.setAccessible(true);
field.set(a, 1);
读取
Field f = a.getClass().getDeclaredField("x");
f.setAccessible(true);
System.out.println(f.get(a));