は、例えば、C#でIはJavaは、別の言語から受け取った静的メソッドの代理人を受け取り、呼び出すことができますか?
[MonoPInvokeCallback(typeof(PointDelegate))]
public static void Callback(int x, int y)
{ .... }
この方法は、署名戻りボイド(INT、INT)のデリゲートに格納されています。
public delegate void PointDelegate(int x, int y);
私はObjective-Cのこのデリゲート変数を送って、そこの上に私はCallback()
を呼び出すためにそれを直接呼び出すことができました。それだけで動作します。 (私が一致するのObjective-C側で同等のtypedef
を宣言した)
C#
objC(Callback);
のObjective-C
typedef void (*PointDelegate)(int x, int y);
void objC(PointDelegate delegateFromCSharp)
{
delegateFromCSharp(1,2);
}
Javaで同等とは何ですか?私はすでにJavaでメソッドを呼び出すことができ、デリゲートが唯一のパラメータとして渡されていると仮定すると、そのJavaメソッドのシグネチャはどうなりますか?受信したデリゲートを呼び出す方法は?
ネイティブと呼ばれます。スレッドの実装を見てくださいhttp://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/Thread.java – Noixes
Javaにはデリゲートの概念がありませんが、機能インタフェースとメソッド参照を使用することができます(https://stackoverflow.com/questions/39346343/java-equivalent-of-c-sharp-delegates-queues-methods-of-various-classes-to-be-exを参照) 。 –