Javacard使用最终变量或仅使用值

时间:2014-03-17 01:17:49

标签: javacard

例如:

i)使用值

Util.arrayCopyNonAtomic(buffer,(short)(offset+20), keyTrack, PARAMETER_OFFSET, **(short) 6**);

ii)使用最终变量

final static short length=6;
Util.arrayCopyNonAtomic(buffer,(short)(offset+20), keyTrack, PARAMETER_OFFSET, **length**);

哪一个更适合javacard开发? (我只想说我以后会使用很多“6”)

2 个答案:

答案 0 :(得分:2)

如果与常量相关,则使用final static会更好。两种情况下生成的二进制文件的大小相同。但是,ii)在代码可读性方面具有优势,并且更易于维护(如果您需要更改该值,则只需在一个位置进行更改)。

注意:为避免混淆,变量写为camelCase,而使用UPPER_CASE写入常量(最终静态)。例如:

Util.arrayCopyNonAtomic(buffer, (short) (offset + 20), 
                        keyTrack, PARAMETER_OFFSET, LEN_OF_KEY);

答案 1 :(得分:0)

最终和静态以及基本类型的字段由Java编译器内联,如Java Language Specification, section 13.4.9中所述。这与JavaCard无关,因为它甚至在转换为JavaCard二进制格式(CAP文件)之前就已经发生了。

因此,最终的二进制代码将完全相同。