2016/07/11

[java]finalをつけましょう、と言われた

ソースが安定してきたので、Android Lintに掛けてみた。

 

以前、finalについてはここここで考えたことがあった。
そのときは、finalはコンパイラレベルの話なので、finalを付けても付けてなくてもバイトコードには変化がないよね、というくらいで終わっていた。

今回指摘されたのは、フィールドでnewし、そのまま使い続けるやつと、コンストラクタの引数でしか代入されないやつらだった。
そういえば、C++のメンバ変数を参照型にするときも、コンストラクタの初期化子にしておけば設定可能だったから、同じ要領なのか。

 

今回は、意識してfinalにできるようになったわけじゃないので、正直なところどうでもよい。
私が最初からfinalにしたいのは、だいたいstatic finalのような定数的なものだけだ。

finalはC++のconstと同じで、変数への代入は怒ってくれるけど、アドレス先の更新までは考慮してくれない。
まあ、そうじゃないとやってられないだろうが。

 

どうしようかと思ったが、finalを付けることにした。
静的なツールだから仕方ないのだけど、今書かれているソースの内容でしか判断できないから、実はこれを拡張する予定があって・・・、なんてのには対応できない。
あまり言語仕様をわかっていないとツールの言いなりになってしまいそうだが、やってればそのうちわかるんじゃないの?くらいでやることにした。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。