相关疑难解决方法(0)

使用Java反射更改私有静态final字段

我有一个带有private static final字段的类,不幸的是,我需要在运行时更改.

使用反射我得到这个错误: java.lang.IllegalAccessException: Can not set static final boolean field

有没有办法改变价值?

Field hack = WarpTransform2D.class.getDeclaredField("USE_HACK");
hack.setAccessible(true);
hack.set(null, true);
Run Code Online (Sandbox Code Playgroud)

java reflection static final private

454
推荐指数
8
解决办法
22万
查看次数

在try块中分配final变量

很短的问题:有更优雅的方法来做到这一点:

Object tmp;
try {
 tmp = somethingThatCanFail();
} catch (Fail f) {
 tmp = null;
}
final Object myObject = tmp;
// now I have a final myObject, which can be used in anonymous classes
Run Code Online (Sandbox Code Playgroud)

java final try-catch

8
推荐指数
1
解决办法
2578
查看次数

将变量初始化为虚拟值是不好的做法吗?

这个问题是我刚才提出的这个问题答案的结果.

据称这段代码"丑陋",因为它将变量初始化为永远不会被读取的值:

String tempName = null;
try{
    tempName = buildFileName();
}
catch(Exception e){
    ...
    System.exit(1);
}
FILE_NAME = tempName;
Run Code Online (Sandbox Code Playgroud)

这确实是不好的做法吗?是否应该避免将变量初始化为永远不会实际使用的虚拟值?

(编辑 - 那么将一个String变量初始化为""一个循环之前会将值连接到String ...?或者这是一个单独的类别?

例如

String whatever = "";
for(String str : someCollection){
   whatever += str;
}
Run Code Online (Sandbox Code Playgroud)

)

default-value variable-initialization

6
推荐指数
1
解决办法
1469
查看次数