Java,宏代码,函数地址

The*_*One 2 java macros function

我是Java的初学者,我想写一些像这样的代码:

TEST(myfunction(1, 2, 3));
Run Code Online (Sandbox Code Playgroud)

TEST在哪里:

  • C中使用的宏
  • 要么是需要函数myfunction的地址的函数

在我的代码中,我希望TEST做一些代码:

TEST(function) {
    if (function()) 
        // code
    else
        //code
}
Run Code Online (Sandbox Code Playgroud)

我知道指针在Java中不可用.一个想法来帮助我?

[编辑]这是另一个例子:

TEST(myfunction(1, 2, 3));
Run Code Online (Sandbox Code Playgroud)

实施TEST的地方:

void TEST (function(args[])) {
try {
    function();
}
catch (Exception e) {
    // Exception happened !
}
Run Code Online (Sandbox Code Playgroud)

}

多亏了这一点,只有一个代码行,我将能够使用try catch!

Ted*_*opp 5

Java没有指向函数的指针.函数在Java中传递的典型方式是传递实现的对象Runnable.

编辑:我已经修改了我的例子,以便更接近你的第二个案例.

在您的情况下,您需要布尔返回值,您可以定义自己的接口:

public interface BooleanTest {
    boolean test(Object... args) throws Exception;
}
Run Code Online (Sandbox Code Playgroud)

然后:

class MyTest implements BooleanTest {
    private boolean result;
    public MyTest(int a, int b, int c) {
        result = a + b == c;
    }
    // stupid test -- don't _have_ to declare "throws Exception"
    public boolean test(Object... args) {
        return result && args.length == 3;
    }
}

TEST(new MyTest(1, 2, 3));
Run Code Online (Sandbox Code Playgroud)

在TEST内:

TEST(BooleanTest test) {
    try {
        if (test.test("Jack", "and", "Jill")) {
            // ...
        }
    } catch (Exception e) {
    }
}
Run Code Online (Sandbox Code Playgroud)