java 怎样动态修改 private static final int 值

利用反射可以修改privatestaticfinalObject的值,但是基本类型就“失效”,原因是在‘编译的时候就会把代码中对此常量中引用的地方替换成相应常量值’参考地... 利用反射可以修改private static final Object的值,但是基本类型就“失效”,原因是在 ‘编译的时候就会把代码中对此常量中引用的地方替换成相应常量值’ 参考地址:http://blog.csdn.net/barryhappy/article/details/24442953/
现在我就是想改一个int类型的,,,是jxl.jar包中的maxFormatRecordsIndex 常量
希望能一起探讨,在此先谢谢各位
那个 final 不是我想加上去的,,,是我用人家的jar包,是jxl.jar。里边的
maxFormatRecordsIndex常量限制了格式化数量,只有 0x1b9;即最大纪录格式数目为441,现在我要导出数据量很大的excel,所以被格式化的数据就不止441条了,,,

我就怕我直接修改jar包,,,哪天jar包会不会被更新,项目是公司的,,
展开
 我来答
匿名用户
2015-08-04
展开全部
package m5.d7;

import java.lang.reflect.Field;

public class FieldTest {
public static void main(String[] args) {
try {
A a = new A();

Field field = a.getClass().getDeclaredField("a");

field.setAccessible(true);

field.set(a, 2);

System.out.println(field.get(a));
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}

利用反射。
追问
谢谢,我上面给的地址里边文章已经说明了,用反射修改修饰符在修改变量值,但是基本类型是有问题的,就算改了,其它用到该变量的地方早在编译的时候就给替换成指定的值,,,你进去看看吧,在问题哪里的地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式