⑴ 利用java反射改一下任意对象的属性值的编码。比如说Student对象的name值原来是GBK的,然后改成utf-8的
只要不是final的,都可以改
问题是,编码不能改。
java内部都是unicode编码。
输出默认都是utf8
你要是想改编码,就在输出的时候重新编码一下就可以了。不用反射。
⑵ 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));
⑶ JAVA中反射是什么
JAVA中反射是动态获取信息以及动态调用对象方法的一种反射机制。
Java反射就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;并且能改变它的属性。而这也是Java被视为动态语言的一个关键性质。
Java反射的功能是在运行时判断任意一个对象所属的类,在运行时构造任意一个类的对象,在运行时判断任意一个类所具有的成员变量和方法,在运行时调用任意一个对象的方法,生成动态代理。
(3)java反射修改属性扩展阅读:
JAVA中反射实例:
1、Class superClass=clazz.getSuperclass();//获取父类。
System.out.println("getSuperclass:"+superClass)。
2、Class[] interfaces=clazz.getInterfaces();//获取实现接口。
System.out.println("getInterfaces:"+interfaces.length)。
3、Constructor[] cons=clazz.getConstructors();//构造方法。
System.out.println("getConstructors:"+cons.length)。
参考资料来源:网络: JAVA反射机制
⑷ 如何通过java的反射 修改对象的属性的值
假设obj是对象的实例、有属性叫name
Field field=obj.getClass().getDeclaredField("name");
field.set(obj, "张三");
⑸ 如何通过java的反射 修改对象的属性的值
Fieldfield=classType.getDeclaredField("username");
//设置压制访问类型检查,只有这样,才能获取和设置某个具体类的Field对应版的值权。
field.setAccessible(true);
System.out.println(field.get(privateField));
//设置私有域的值
field.set(privateField,"arthinking");
System.out.println(field.get(privateField));
⑹ Java反射 在只知道类名的情况下,怎样给其中的私有属性赋值
利用反射能
//假设类名为A
//实例化类
=newA();
//获取class
Classc=p.getClass();
//获取该类所有的字段
Field[]fields=c.getDeclaredFields();
//遍历赋值
for(inti=0;i<fields.length;i++){
StringfiledName=fields[i].getName();
//AccessibleTest类中的成员变量为private,故必须进行此操作
fields[i].setAccessible(true);
//判断类型
Class<?>type=fields[i].getType();
//获取字段类型
StringtypeName=type.getName();
System.out.println(type.getName());
//对字段进行赋值第一个参数为对象引用第二个参数为要附的值
//如果为字符串类型
if("java.lang.String".equals(typeName)){
fields[i].set(p,"1");
}
//如果为日期类型
elseif("java.util.Date".equals(typeName)){
fields[i].set(p,newDate());
}
else{
fields[i].set(p,1);
}
}
//楼主我只是简单的写了下。可能还需要判断字段名称以及其他类型什么的。
最后希望楼主多看看java 文档。
⑺ java 反射给对象中的集合赋值
access to field not allowed 报的错误是不允许访问那个属性。
所以,不能直接用这个属性赋值(那个属性可能是私有的)。可以看下那个属性有没有提供 公共的 set方法。使用method.invoke(...)
看看
⑻ java能在运行期间通过反射去改变方法的返回值么
不能,反射是可以拿到对象的属性,方案,类等信息,如一个Persion类,有name属性,也有相应的get/set方法,你可以通过反射去修改这个name的的值,但你不能在运行getName方法时去改变它的返回值,必须利用代理,在方法外面做拦截。 利用AOP,在返回前改变值即可,Aop的核心也就是动态代理。
⑼ 如何通过反射动态修改函数的定义
如何通过反射动态修改函数的定义
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
JAVA反射(放射)机制:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言。但是JAVA有着一个非常突出的动态相关机制:Reflection,用在Java身上指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体、或对其fields设值、或唤起其methods。