Java 使用函数参数创建方法
我刚刚发现了这个方法:Java 使用函数参数创建方法,java,Java,我刚刚发现了这个方法: new Thread( new Runnable() { public void run() { try { // MY CODE } catch (Exception e) { e.printStackTrace();
new Thread(
new Runnable() {
public void run() {
try {
// MY CODE
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
我想知道我是否可以创建一个带有参数的方法,该参数是我将放入//我的代码中的函数。我可以这样做吗?方法:)Java不支持第一类函数(即可以作为参数传递或从方法返回的函数) 但您可以使用策略模式的一些变体:使用方法
execute
创建一些接口execute
,并将其匿名实现作为参数传递:
interface Executable {
void execute();
}
...
void someMethod(final Executable ex) {
//here's your code
new Thread(
new Runnable() {
public void run() {
try {
ex.execute(); // <----here we use passed 'function'
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
...
//here we call it:
someMethod(new Executable() {
public void execute() {
System.out.println("hello"); // MY CODE section goes here
}
});
接口可执行文件{
void execute();
}
...
void someMethod(最终可执行文件){
//这是你的密码
新线程(
新的Runnable(){
公开募捐{
试一试{
execute();//这实际上是在创建一个匿名类对象(它实现了Runnable接口)。因此,实际上您只传递类对象。这只是一种简写符号
这对于不打算在调用代码中再次重用/引用正在创建的对象的情况特别有用
现在你可以问一下你可以创建一个函数,它期望一个对象,而调用你可以通过上面所要求的对象/匿名类对象。
< P>高级语言,如普通LISP和Python,你正在寻找的是java。C++没有这个特性。C允许你把函数指针作为参数。C/++也有。 C++支持吗?抱歉,对于主题问题,我想知道:)NXQD:在比java大的范围内。C代表有第一类公民的代表。你最好单独问,熟悉C的人给你一个好的答案。