⑴ 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));