dポイントプレゼントキャンペーン実施中!

CのプログラムをJAVAに移植しています。関数ポインタのプログラムを移植したいのですがやり方がよく判りません。interfaceを実装するとできるようですが・・・ 以下のCプログラムをJAVAに移植する方法を教えてください。

#include <stdio.h>

int func(int , int);

int main() {
int (*po)(int , int) , i;
po = func;

i = (*po)(10 , 3);
printf("%d" , i);
return 0;
}

int func(int i , int j) {
return i + j;
}

A 回答 (14件中11~14件)

そんなことより、アプリケーションのレベルの要求をJavaと照らしてよく見据えるべきです。

関数ポインタなどより、もっと安全で堅牢な方法があるはず。私はC(などの古代言語)のナニナニをJavaで書くには?という話題が大嫌いです。真剣な開発にとって、無意味かつ無メリットだから。

この回答への補足

専門家らしい人からこんなことを言われると身も蓋もなくなります。初心者にとって言語を比較しながら学ぶことは、その言語の理解を深める上で当然あってよい手法です。

補足日時:2008/02/18 19:46
    • good
    • 0

Java には関数オブジェクトってないみたいね。


JDK7 の仕様には入るみたい
http://journal.mycom.co.jp/articles/2006/08/23/j …

それまでは自前で適当に関数のように動作するクラスを作るしかないのでは?
    • good
    • 0

callback関数の渡す方法があるようですが、これで行けないでしょうか。


未検証です。

// 型がわかりません
private myClass.func po=new myClass.func();
i= po(10, 3);

class myClass{
//finalって必要?
 public final int func(int a, int b){
  return a+b;
 }
}


JAVAはまだ素人ですが、
ifを省略するために配列にしたりすることが多いので、JAVAでもこういう方法が使えるといいですけどね。
if(a==0){
func0();
}else if(a==1){
func1();
}else if(a==2){
func2();
}

// funcs[0]=new func0();
// funcs[1]=new func1();
// funcs[2]=new func2();
a=0;
funcs[a](); //ifを省略して実行

参考URL:http://mindprod.com/jgloss/callback.html
    • good
    • 0

「参照渡し」で調べたら出るんじゃないかな


http://www.google.co.jp/search?q=java%E3%81%A7%E …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!