为什么Java API要求非静态地访问setDefaultUseCaches?

时间:2014-03-03 17:30:32

标签: java api conventions urlconnection calling-convention

使用现在基本上已经不存在的Java Web Start(因为最新的Java更新刚刚杀死它),我发现了一个需要我调用urlConn.setDefaultUseCaches(false)的情况。

然而,我必须首先构造我发现虽然变量显然是“粘性的”,并且在进一步检查源代码时,我发现该变量确实是一个静态布尔值。那么为什么变量通过非静态方法访问?

毕竟,即使是静态布尔值的getter方法也是非静态的?这是故意的吗? 我的意思是静态方法是否可以访问静态变量?

1 个答案:

答案 0 :(得分:1)

这是一个错误。直接从错误故障单引用:http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4851466

  

setDefaultUseCaches()应该是静态的,但不能更改   现在不影响二进制兼容性。它的效果是非静态的   只是你需要在调用它之前创建一个实例,而不是   这么严重的问题。换句话说,没有足够的理由   添加一个新的静态方法,以正确的方式完成它。所以我们无法解决这个问题。