java反射獲取對象屬性
㈠ java中如何通過反射獲取類的屬性
簡單的方法如下:
Class<?> cls=Class.forName(className);////////////////////////通過類的名稱反射類
Object obj=cls.newInstance();//////////////////////對象實例化
Field field=cls.getField(fieldName);/////這個對應的是屬性
fieldValue=field.get(obj);////這個就是屬性的值
㈡ Java反射設置私有屬性和獲取屬性
Java代碼
package ;
import java lang reflect Field;
import java lang reflect InvocationTargetException;
import java lang reflect Method;
public class TestBean {
private int age;
public static void main(String []args) throws InstantiationException IllegalAccessException SecurityException NoSuchFieldException{
try {
Class<?> class =Class forName( TestBean );
Object tObject=class newInstance();
Field field=class getDeclaredField( age );
field setAccessible(true); //設置私有屬性范圍
field set(tObject );
System out print(field get(tObject));
try {
Method method=class getMethod( setAge int class);
method invoke(tObject );
Method getMethod=class getMethod( getAge );
System out println(getMethod invoke(tObject));
} catch (NoSuchMethodException e) {
// TODO Auto generated catch block
e printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto generated catch block
e printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto generated catch block
e printStackTrace();
}
} catch (ClassNotFoundException e) {
// TODO Auto generated catch block
e printStackTrace();
}
}
public int getAge() {
return age;
}
public void setAge(int age) {
this age = age;
}
lishixin/Article/program/Java/hx/201311/26324
㈢ java傳過來一個對象後如何得到這個對象的所有屬性值
1、過去某個類的某個屬性:
2,可以通過對象調用其屬性:
3,創建對象 :類名 對象名 = new 類名();
4,調用屬性:對象名.屬性
5,獲取某個對象的所有屬性
6,數組類型[] 數組名 = 對象名.getClass().getDeclaredFields();
7,使用反射
public static void main(String[] args) {
Model model = new Model();
Field fd = new Field();
fd.getField(model);
}
private void getField(Object model) {
java.lang.reflect.Field[] fields = model.getClass().getDeclaredFields();
for(java.lang.reflect.Field f:fields){
System.out.println(f.getName());
}
}
㈣ 如何利用java的反射機制動態的取得對象的屬性
Java.lang.Class
getDeclaredFields()
返回 Field 對象的一個數組,這些對象反映此 Class
對象所表示的類或介面所聲明的所有欄位。
Java.lang.reflect.Field
getName()
返回此 Field 對象表示的欄位的名稱。
getGenericType()
返回一個 Type 對象,它表示此 Field 對象所表示欄位的聲明類型。
以上是jdk裡面的一些用法,就是用你想要獲取對象的屬性得到它的class 然後調用 getDeclaredFields()就可以得到欄位數組了。
然後再用下面的方法就可以得到屬性名,類型這一些。
很簡單,要想實現現復雜的功能就再找一下api 找出相應的方法。
㈤ 什麼是java的反射
Java反射指的是對於任何的一個java類,我們都可以通過反射獲取到這個類的所有屬性和方法(包含私有的屬性方法),使用java反射我們也可以調用一個對象的任何方法。
我們知道Java是一門面向對象編程的語言,我們編程的時候,經常會將類的屬性進行封裝,然後提供public方法進行屬性的設置和獲取。類的屬性我們通常會設置成private的私有屬性,為的就是保護對象屬性不被隨意的修改和訪問。但是反射機制卻恰恰相反,通過反射,我們可以獲取到這些被保護的屬性和方法,並且可以修改和訪問他們。
在java中我們可以使用object對象的getClass();方法獲得Class的對象classObject;語法格式為 Class classObject = object.getClass() ;可以根據Class對象的方法獲取object對象的相關屬性和方法;
獲取object對象的名字可以使用 classObject.getName();獲取類的名稱,獲取到的結果包含包的名稱;
獲取object對象的包名稱,可以使用classObject.getPackage();獲取包的名稱;
獲取object對象的所有public屬性,可以使用classObject.getFields();方法,返回列表是屬性類Field[]對象列表;
獲取object對象所有屬性,可以使用classObject.getDeclaredFields();方法,返回的是所有屬性列表(包含private屬性);
獲取object對象某個特定的屬性,可以使用classObject.getField( fieldName );可以根據屬性名稱獲取屬性類的對象;
獲取object對象private屬性,可以使用classObject.getDeclaredField( fieldName );根據屬性名獲取屬性對象信息;
獲取object對象public方法,使用classObject.getMethods();可以獲取到方法類Method[]對象列表;
獲取object對象某個特定的public方法,使用classObject.getMethod( funName , Class... parameterTypes);根據方法名和方法參數類型列表,可以獲取到方法類的對象;
獲取object對象所有方法(包含private方法);使用classObject.getDeclaredMethods();可以獲取所有的方法對象列表;
獲取object對象某個特定方法(包含private方法),使用classObject.getDeclaredMethod ( funName, Class... parameterTypes );根據方法名和方法參數類型列表,可以獲取到類的特定方法(包含private方法);
獲取object對象類中所有的public構造方法,可以使用classObject.getConstructors(); 獲取到構造類Constructor的對象列表;
獲取object對象類中某個特定的構造方法,可以使用classObject.getConstructor( Class... parameterTypes ); 根據參數類型列表,獲取指定的構造函數對象;
獲取object對象類中所有的構造方法(包含private),可以使用classObject.getDeclaredConstructors(); 獲取到構造類Constructor的對象列表;
獲取object對象類中某個特定的構造方法(包含private),可以使用classObject.getDeclaredConstructor( Class... parameterTypes ); 根據參數類型列表,獲取指定的構造函數對象;
㈥ java反射取對象屬性值 不是通過get方法取值
反射不是通過get取值的,是通過該對象的信息,比如說名稱、內存地址等來訪問類,方法,屬性等,可以獲取任意對象的信息,但不能獲得私有屬性(private String s=「sd」;)的值,切記
推薦《JAVA核心技術》這本書會對你有幫助的