在onEvent的各种示例中,有时变量被声明为final,有时则不是。
例如:
public void onEvent(final ValueEvent entry, final long sequence, final boolean onEndOfBatch)
反对
public void onEvent(ValueEvent entry, long sequence, boolean onEndOfBatch)
我可以对最终的原因和用途发表评论吗?
答案 0 :(得分:0)
简短的回答是LMAX编码标准要求参数为sorted_averages.each do |(week, product), g|
fields.each do |h|
s =
case h[:label]
when "Week" then week.to_s
when "Ending Date" then week_end_date[week]
when "Product" then product
else g[h[:label]] || ''
end
case h[:alignment]
when :left then s = s.ljust(h[:width])
when :center then s = s.center(h[:width])
when :right then s = s.rjust(h[:width])
end
print s
end
puts
end
Week Ending Date Product Nairobi Mombasa Kisuma Kakuru Eldoret
38 2014-09-21 Dry Maize 3140.00 2216.67 2513.13 3362.50 2311.43
38 2014-09-21 Coffee 2187.66 1841.43
39 2014-09-28 Dry Maize 2060.12 3105.61
,但这只是一个惯例问题。
在参数中添加final只意味着该方法不能更改基元的值或重新分配通过的对象的引用。有关详细信息,请参见此处on final
许多人认为为参数指定一个新值是不好的做法,并导致许多微妙的错误。