2016/05/27

[java]enum値の名前が取得できる!

Cだと、デバッグログのためにこういうことをしばしば行う。

=======================
typedef enum {
  ERR1,
  ERR2,
  ....
} ErrType;

const char *getErrString(ErrType err)
{
  switch (err) {
  case ERR1: return "ERR1";
  case ERR2: return "ERR2";
  ....
}

=======================

面倒だから、そのままint値で出力することもあるのだけど、数字だと検索しにくいし読みづらいので、変換するのだ。

 

久々にAndroidアプリを作ろうとしていて、似たような状況が発生した。
enumもオブジェクトだから、こういう関数を作らずにメソッドにしてしまうか。。。

そういえば、リフレクションとかいう、メソッド名で逆引きして実行するような機能があったから、あんな感じで名前を引っ張れるのでは?

 

=======================
enum ErrType {
  ERR1,
  ERR2,
  ....
}

void xxx(ErrType err) {
  ...
  Log.d(TAG, err.toString());
  ...
}
=======================

これでいけるんだ!
はぁ、さすが21世紀やねぇ。。。

 

j2objcじゃないけど、CをJavaっぽく置き換えてくれるツールはないだろうか。。。
コンパイルが通る必要はないのだけど、ちょっとやるたびにJavaだとどう書くのかがわからないのだ。
C to Java converter
これを使うと、少しはそれっぽくしてくれたのだが、うーん、期待通りではないな。

地道に覚えていくしかないか。

0 件のコメント:

コメントを投稿

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

注: コメントを投稿できるのは、このブログのメンバーだけです。