我是Java的初学者,我想写一些这样的代码:
TEST(myfunction(1, 2, 3));
TEST 是:
在我的代码中,我希望 TEST 来做一些代码:
TEST(function) {
if (function())
// code
else
//code
}
我知道指针在Java中不可用。 一个想法来帮助我?
[编辑] 这是另一个例子:
TEST(myfunction(1, 2, 3));
实施TEST的地方:
void TEST (function(args[])) {
try {
function();
}
catch (Exception e) {
// Exception happened !
}
}
多亏了这一点,只需一个代码行,我就可以使用 try catch !
答案 0 :(得分:5)
Java没有指向函数的指针。函数在Java中传递的典型方式是传递实现Runnable
的对象。
编辑:我已将我的示例修改为更接近您的第二个案例。
在您需要布尔返回值的情况下,您可以定义自己的接口:
public interface BooleanTest {
boolean test(Object... args) throws Exception;
}
然后再说:
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));
并在TEST内:
TEST(BooleanTest test) {
try {
if (test.test("Jack", "and", "Jill")) {
// ...
}
} catch (Exception e) {
}
}
答案 1 :(得分:0)
您需要将接口实现作为参数。像这样:
public static void testFunction(new FunctionContainer() {
@Override
public int function() {
...
}
};);
答案 2 :(得分:0)
你不能在java中真正做到这一点,因为方法不是对象。要实现所需的功能,您需要将函数/方法包装在另一个对象中。
// Define a function interface that your test method takes as an argument.
public interface Function {
public abstract void doFunction();
}
// Test code
public void test(Function function) {
function.doFunction();
}
// You can then pass an implementation of Function to your test method
test(new Function() {
public void doFunction() {
// Function implementation
}
});