1. java反射获取一个实体类中的另外一个实体类中属性的值,两个实体类是关联关系。
class Test{
public static void main(String[] args) {
A a = new A();
System.out.println(getValueInField(a,"b1","i"));
System.out.println(getValueInField(a,"b2","i"));
System.out.println(getValueInField(a,"b3","i"));
}
public static Object getValueInField(Object obj,String field,String name){
//三个参数分别是外部的类的对象obj,作为成员属性的类的引用名,要查询的类内部的属性名
try {
Object o = obj.getClass().getDeclaredField(field).get(obj);
return o.getClass().getDeclaredField(name).get(o);
} catch (Exception e) {
System.out.println("查找失败");
return null;
}
}
}
class A{
B b1 = new B(1);
B b2 = new B(2);
}
class B{
int i;
B(int i){
this.i = i;
}
}
2. java如何用反射给对象赋值
java用反射给对象赋值的方法:
主程序:
3. java怎么通过反射得到属性的类型
Class<?>cls=Class.forName(className);//通过类的名称反射类
Objectobj=cls.newInstance();//对象实例化
Fieldfield=cls.getField(fieldName);//这个对应的是属性
fieldValue=field.get(obj);//这个就是属性的值
4. java反射取对象属性值 不是通过get方法取值
反射不是通过get取值的,是通过该对象的信息,比如说名称、内存地址等来访问类,方法,属性等,可以获取任意对象的信息,但不能获得私有属性(private String s=“sd”;)的值,切记
推荐《JAVA核心技术》这本书会对你有帮助的
5. 如何利用java的反射机制动态的取得对象的属性
Java.lang.Class
getDeclaredFields()
返回 Field 对象的一个数组,这些对象反映此 Class
对象所表示的类或接口所声明的所有字段。
Java.lang.reflect.Field
getName()
返回此 Field 对象表示的字段的名称。
getGenericType()
返回一个 Type 对象,它表示此 Field 对象所表示字段的声明类型。
以上是jdk里面的一些用法,就是用你想要获取对象的属性得到它的class 然后调用 getDeclaredFields()就可以得到字段数组了。
然后再用下面的方法就可以得到属性名,类型这一些。
很简单,要想实现现复杂的功能就再找一下api 找出相应的方法。
6. java怎么通过反射获得所有的属性的值
Class<?> clazz = ref.getClass();
Method method=clazz.getMethod("getLength");
System.out.println(method.invoke(ref));
7. java中如何通过反射获取类的属性
简单的方法如下:
Class<?> cls=Class.forName(className);////////////////////////通过类的名称反射类
Object obj=cls.newInstance();//////////////////////对象实例化
Field field=cls.getField(fieldName);/////这个对应的是属性
fieldValue=field.get(obj);////这个就是属性的值
8. 怎样用java反射机制获得父类private 属性的值
Class c = null;
try {
c = Class.forName("com.ibm.lan.test.Sub");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Class superClass = c.getSuperclass();
Field[] fields = superClass.getDeclaredFields();
这是得到父类的属性
for(int i=0;i<fields .length;i++)
{
fields [i].setAccessible(true);
System.out.println(fields [i].getType());
fields [i].set();
}