• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:iアプリのstar言語の質問です。)

iアプリのstar言語でのint型の検出方法について

このQ&Aのポイント
  • iアプリのstar言語でint型の変数の検出方法について質問があります。試した方法はいくつかありましたがうまくいかず、他に対応方法があれば教えていただきたいです。
  • 試した方法は『変数 == 比較対象』や『変数.equals(比較対象)メソッド』、『変数 instanceof 参照型のクラス』、『変数.getClass().getName() == 比較対象』などですが、いずれもエラーメッセージが発生しました。
  • プリミティブ型の値が代入された変数の型を検出する方法を知りたいです。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

star自体には詳しくないんですが、Javaで考えると intで宣言した変数には基本的にintしか入りません。 int numと宣言すれば、その有効範囲内なら、numは常にintです。 コンパイルの時点で決まり、実行中は変化しません。 よって、実行時の状況に応じて判定する必要など無いと思うのですが。 判定を必要とするのは、Object型とか、ジェネリクスを使ったときとかしか思い浮びませんが、どちらもプリミティブではないのでinstanceof等を使って判定ができるはずです。 何がしたいのでしょうか?

hatopo7979
質問者

お礼

すみません自己解決しました。 こうする事にしました。 test( new Integer(50) ); public void test(Object obj){ if(obj instanceof Integer){ Integer num = (Integer)obj; System.out.println(num.intValue()); }

hatopo7979
質問者

補足

ご回答ありがとうございます。 何がしたいかというと、ご指摘の通りですが、Object型を引数にとるメソッドにintを指定して呼び出してから、内部処理で、 『数値なら~』、『nullなら~』、など処理を分岐させたいんです。 エラーにならない書き方を教えてください。 ↓具体的には、こんな感じです。↓ public void test(Object obj){ if(objが数値なら){ //処理 }else if(objがnullなら){ //処理 } } ------------------------------ test(1); ------------------------------ としたいのですが、エラーが2つ。 ■Object型の引数にintを指定できないエラー。 test(java.lang.Object) (SceneMainGame 内) を (int) に適用できません ------------------------------ ■instanceofの右側に、『int』を指定できないエラー。 予期しない型 検出値 : int 期待値 : クラスまたは配列 ------------------------------