0 0

findbugs 之多维数组 使用static 的警报5

	public final static double[][][] Y_MIN_SCOPE=
	{
		{{-120, -25}},
		{{0, 254}},
		{{0, 254}},
		{{0, 254}}
	    
	};
        public final static double[] GRID_HEIGHT = {1,1,1,1};

 	public final static String[][] TAG_NAMES=
	{
		{"RSRQ(dB)","RSRP(dBm)"},
		{"TA(16*Ts)","UE TxPower(dBm)"},
		{"TA(16*Ts)","RSRP(dBm)"},
		{"TA(16*Ts)","RSRQ(dB)"}
	};


我这样定义了 多个数组,均使用了 public final static 修饰符,

findbugs给的修改提示是

In LTE3DConstant
Field LTE3DConstant.Y_MIN_SCOPE
At LTE3DConstant.java:[line 53]
Y_MIN_SCOPE should be package protected
Bug Type: MS_PKGPROTECT
Bug Category:MALICIOUS_CODE (Malicious code vulnerability)
Source File:
Line:53

	protected final double[][][] Y_MIN_SCOPE=
	{
		{{-120, -25}},
		{{0, 254}},
		{{0, 254}},
		{{0, 254}}
	    
	};


修改成这样就不报错了,

请问为什么要修改为 protected ,而且不能使用static ?



问题补充:
love_ai87 写道
findbugs报错,又不是程序报错,这个只是建议而已,可能是fundbugs根据你项目的实际调用情况,发现在包外面没有调用过这个数组,所以就建议你改成包权限的

关键是static 这个  为什么不能使用

问题补充:
love_ai87 写道
findbugs报错,又不是程序报错,这个只是建议而已,可能是fundbugs根据你项目的实际调用情况,发现在包外面没有调用过这个数组,所以就建议你改成包权限的



还有 protected 我觉得关键也不是这个原因,

如果只是考虑到项目实际调用情况的话,

那可以有N多个 权限需要修改的了。

难道还检查所有变量的调用范围,那可不只这些变量需要修改的了。

问题补充:
xfei6868 写道
这个的确应该跟你的使用有关系,改成 protected 是指只在你的子类或本身出现的情况。而去掉static可能是考虑到你的这个常量只在自己本身或子类中调用,根据其调用判断出来应该只是一个对象常量,而不需要是类常量,所以提示你去掉static。


你好,这个是公共常量类 没有子类,也不会在自身使用。

问题补充:
xfei6868 写道
java中能分辨出一个类是公共常量类吗?

在外部的调用中,三个常量都是什么情况呢?

Y_MIN_SCOPE常量在外部如果直接用类名调用过的话,肯定不会有这样的报错了。


你好,定义为公共常量类这个确实是我们这边的开发规范。

Y_MIN_SCOPE常量我是在外直接用的,正因如此 报这个错,我才会不解上来询问的。


问题补充:
xfei6868 写道
能写出你使用 的情况吗?  如果使用了 改成你现在的不是要报真正的错误了吗?

不好意思 发帖时日已久,我已按照要求修改 为通过实例调用。

要不然通过不了公司的代码检测.. 现在还是不解。

问题补充:
xfei6868 写道
你能写出在外部是怎么调用的吗? 如果你说在外部是有调用的话,现在是 protected 变量肯定是在外部无法访问的啊!

同包中是可以访问的啊
OO 
2010年7月27日 15:37

7个答案 按时间排序 按投票排序

0 0

既然在同一包中被访问的,提示改为protected 并不矛盾啊!

而static的修改,应该的情况肯定是,你使用对象调用的而不是类直接调用。

显然你使用的公共方法类的使用方法出的问题。

2010年8月11日 15:57
0 0

你能写出在外部是怎么调用的吗? 如果你说在外部是有调用的话,现在是 protected 变量肯定是在外部无法访问的啊!

2010年8月11日 15:46
0 0

能写出你使用 的情况吗?  如果使用了 改成你现在的不是要报真正的错误了吗?

2010年8月11日 15:28
0 0

java中能分辨出一个类是公共常量类吗?

在外部的调用中,三个常量都是什么情况呢?

Y_MIN_SCOPE常量在外部如果直接用类名调用过的话,肯定不会有这样的报错了。

2010年8月11日 15:08
0 0

这个的确应该跟你的使用有关系,改成 protected 是指只在你的子类或本身出现的情况。而去掉static可能是考虑到你的这个常量只在自己本身或子类中调用,根据其调用判断出来应该只是一个对象常量,而不需要是类常量,所以提示你去掉static。

2010年8月11日 14:38
0 0

它又没有把所有的数组都改成非static的,所以说这个跟static没什么关系

2010年7月28日 09:22
0 0

findbugs报错,又不是程序报错,这个只是建议而已,可能是fundbugs根据你项目的实际调用情况,发现在包外面没有调用过这个数组,所以就建议你改成包权限的

2010年7月27日 17:23

相关推荐

Global site tag (gtag.js) - Google Analytics