ソースが安定してきたので、Android Lintに掛けてみた。
以前、finalについてはここやここで考えたことがあった。
そのときは、finalはコンパイラレベルの話なので、finalを付けても付けてなくてもバイトコードには変化がないよね、というくらいで終わっていた。
今回指摘されたのは、フィールドでnewし、そのまま使い続けるやつと、コンストラクタの引数でしか代入されないやつらだった。
そういえば、C++のメンバ変数を参照型にするときも、コンストラクタの初期化子にしておけば設定可能だったから、同じ要領なのか。
今回は、意識してfinalにできるようになったわけじゃないので、正直なところどうでもよい。
私が最初からfinalにしたいのは、だいたいstatic finalのような定数的なものだけだ。
finalはC++のconstと同じで、変数への代入は怒ってくれるけど、アドレス先の更新までは考慮してくれない。
まあ、そうじゃないとやってられないだろうが。
どうしようかと思ったが、finalを付けることにした。
静的なツールだから仕方ないのだけど、今書かれているソースの内容でしか判断できないから、実はこれを拡張する予定があって・・・、なんてのには対応できない。
あまり言語仕様をわかっていないとツールの言いなりになってしまいそうだが、やってればそのうちわかるんじゃないの?くらいでやることにした。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。