ユーザーが任意のメソッド呼び出しを行えるようにするテストクラスを開発しています。次に、私のクラスがそれらをトリガーします。
static class UserClass {
static String method_01() { return ""; }
static void method_02() {}
}
class MyTestUtil {
void test() {
// HowTo:
// performTest( <Please put your method calls here> );
performTest( UserClass.method_01() ); // OK
performTest( UserClass.method_02() ); // compile error
}
void performTest(Object o) {}
// This is only a simplified version of the thing.
// It is okay that the UserClass.method_calls() happens at the parameter.
// This captures only the return value (if any).
}
2 つ目performTest()
は、次のコンパイル エラーです。
Main.MyTestUtil 型のメソッド performTest(Object) は、引数 (void) には適用されません。
要するに、から返されたものvoid function()
をメソッドパラメーターに受け入れる方法を見つけています。
(または変数に - それほど違いはありません)
static void function() {}
public static void main(String[] args) {
this_function_accepts ( function() );
// The method this_function_accepts(Void) in the type Main is not applicable for the arguments (void)
Void this_var_accepts = function();
// Type mismatch: cannot convert from void to Void
}
私は少し研究をしました。そして、私はクラスを実現しましたjava.lang.Void
。しかし、それは(小さな v) ではなく、ユーザーのメソッドに対して通常ではないnull
型Void
(大きな V)のみを受け入れます。void
// adding these overloading methods doesn't help
void this_function_accepts() {}
void this_function_accepts(Void v) {}
void this_function_accepts(Void... v) {}
void this_function_accepts(Object v) {}
void this_function_accepts(Object... v) {}
助けてくれてありがとう!