- - PR -
 
Java関数から関数名を返せますか?
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
  | 
 投稿日時: 2007-01-21 17:15 
お世話になります。
C++の関数から関数名を戻り値として返せますが、 Javaでは出来ますか?つまり、下記のようにできますか? int f1(int x) { ... } ??? f2( ) { ... return f1; } 宜しくお願いします。  | ||||||||
  | 
 投稿日時: 2007-01-21 17:24 
 実行されているメソッドの名称を返したいのでしょうか? 
 ここを見ると、実行した戻り値をさらに戻り値として返したいように見えますが。 # 名称だとしたら、別のメソッド名なんて、普通要らないでしょうし... _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌  | ||||||||
  | 
 投稿日時: 2007-01-21 17:35 
バッチ処理などの時に、まずどの関数を実行すべきか関数で決め、
この関数の戻り値は関数名なので、直接この戻り値を利用して 必要な関数を実行します。このようなやり方は必要だと思います。 このような関数はどう定義するか分からないので、 ご存知の方はご教授ください。 _________________  | ||||||||
  | 
 投稿日時: 2007-01-21 17:49 
java.lang.Class#getMethod(java.lang.String)
java.lang.reflect.Method ググればサンプルもいっぱいあるし、 この辺を調べるとわかると思います。  | ||||||||
  | 
 投稿日時: 2007-01-21 22:03 
インタフェースを使って以下のようにするのはどうでしょうか?
 # でもこれだと似たような方法で C++ でもできそうだなあ(^^ゞ # 「戻り値は関数名」と言っているし、これではダメなのかしらん?  | ||||||||
  | 
 投稿日時: 2007-01-21 22:34 
こんばんは。
 「関数名」ではなく、「関数ポインタ」のことですね? Javaだと次期バージョン(Java7)で「メソッド参照(Method References)」として 追加が検討されているようですが… ちなみにC++では、「関数オブジェクト(function object)」というものもあります。  | ||||||||
  | 
 投稿日時: 2007-01-22 11:46 
 折角 Javaを使用するのだから、関数単位ではなくクラス単位で切り替えるべきでしょう。 変なトリックを使用するよりも、ちゃんとしたオブジェクト指向の設計をしたほうが良いと思います。  | ||||||||
  | 
 投稿日時: 2007-01-22 12:03 
 関数ポインタという手法はJavaでは用いることができませんが、 Strategyパターンを使うことで上記の目的を達成することはできます。 デザインパターンについてはC++でも扱えることですから オブジェクト指向が理解できていればJavaでも苦労なく扱えることでしょう。 
  | ||||||||
