Androidというか、Javaだ。
FeliCa Liteを操作するclassを作った(前から作ってたやつだが)。
最初は、MifareUltralightみたいに、NfcFに毛が生えたような操作だけ追加しようと考えていた。
が、
public final class NfcF extends BasicTagTechnology {
と、finalになってた。
じゃあ継承できんので所有させようかと思ったのだが、NfcF互換にするならメソッドを全部呼べるようにせんといかん。
うーん、それはめんどくさい。
ということで、NfcF互換は諦め、別のものにした。
https://github.com/hirokuma/FLFMT/blob/master/src/com/blogpost/hiro99ma/nfc/FelicaLite.java
static classだ。
どうせ同時に扱うNFCタグはたかだか1つなので、もういいだろうと思ったのである。
毎回引数でTagをもらうようにすればいいけど、それはそれでめんどうなので、最初にもらったら終わるまでFelicaLite内で保持するようにしている。
気にしているのは、この「保持する」のところ。
static classだから、保持するのもstatic。
明示的に忘れさせてもらわないといかんのだ。
自分で作ってる分にはそれでもいいけど、なんか他にいい手段はなかろうか。
enableForegroundDispatch()なんかも、同じといえば同じなので、もうメソッドのコメントでやーやー言うしかないのかね。
C++だと、スコープ外になるときにデストラクタが呼ばれるから、そのしくみを使うようにしてもらえばいいのだけど、これも結局はメンバ変数なんかで保持されたら同じなのだ。
Cでやってるとそれが普通なので、使う側の責任にはなる(そして忘れてバグる)のだけど、それだったらそもそもそういう実装をした方が悪い、という考え方もある(まあ、メモリが足りなくてそうせざるをえんことも多いのだが)。
Androidはメモリが多いんだから、static classとかしないでインスタンスをばしばし作ればいいやん、という気もするのだが、やっぱりもったいないという気もしてしまう。
うーん、悩ましいですわ。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。