java 中,怎样判断一个变量是否是 final 常量?
内存溢出,写了个公共方法,出入类名,获取类中所有变量,设置为null,这样垃圾处理器,就能很好的回收资源,解决内存溢出问题。如果是变量是final,我赋值为null,就会...
内存溢出,写了个公共方法,出入类名,获取类中所有变量,设置为null,这样垃圾处理器,就能很好的回收资源,解决内存溢出问题。
如果是变量是final,我赋值为null,就会抛出异常。。。
另外,处理8中基本数据类型的变量,也会抛出异常
受了toudingdi 的启发,下面是我写的一个方法,参数是类,利用反射获取类中所有属性
public void realeaseRes(Object obj){
Field[] fields = obj.getClass().getDeclaredFields();
for (Field field : fields) {
String fieldName = field.getName();
try {
Field f = obj.getClass().getDeclaredField(fieldName);
//抑制Java对其的检查
f.setAccessible(true);
//if(f.get(obj) instanceof Integer || f.getBoolean(obj))
f.set(obj, null);
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
//当要置null的对象,是final类型时,不抛出异常,进入下一次循环
continue;
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
} 展开
如果是变量是final,我赋值为null,就会抛出异常。。。
另外,处理8中基本数据类型的变量,也会抛出异常
受了toudingdi 的启发,下面是我写的一个方法,参数是类,利用反射获取类中所有属性
public void realeaseRes(Object obj){
Field[] fields = obj.getClass().getDeclaredFields();
for (Field field : fields) {
String fieldName = field.getName();
try {
Field f = obj.getClass().getDeclaredField(fieldName);
//抑制Java对其的检查
f.setAccessible(true);
//if(f.get(obj) instanceof Integer || f.getBoolean(obj))
f.set(obj, null);
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
//当要置null的对象,是final类型时,不抛出异常,进入下一次循环
continue;
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
} 展开
4个回答
展开全部
public static boolean isFinal(Object o){
try{
o=null;
}catch(Exception ex){
return true;
}
return false;
}
try{
o=null;
}catch(Exception ex){
return true;
}
return false;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
为啥要判断final呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你在申明的时候不就知道了、
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询