Java:有可能生成一组方法或任何类似的东西吗?
我想创建一个循环,读取现在要运行的方法并执行它们。我想做一些像:Java:有可能生成一组方法或任何类似的东西吗?,java,for-loop,methods,set,Java,For Loop,Methods,Set,我想创建一个循环,读取现在要运行的方法并执行它们。我想做一些像: set.add(milk()); set.add(doSomething()); set.add(count()); for(Iterator i = set.begining(); i!= set.end(); ++i){ *i; //do the method on "i" } (我还不知道集合在java中的实现,只有c++) 我需要它,因为在游戏过程中执行的方法会发生很多变化,我希望避免大量的“如果”和代码混乱将每
set.add(milk()); set.add(doSomething()); set.add(count());
for(Iterator i = set.begining(); i!= set.end(); ++i){
*i; //do the method on "i"
}
(我还不知道集合在java中的实现,只有c++)
我需要它,因为在游戏过程中执行的方法会发生很多变化,我希望避免大量的“如果”和代码混乱将每个方法定义为
RunnTable
,然后将它们添加到数组中,并通过调用run()
对每个方法进行迭代
像
使用新的Java8Lambda运算符可以使用更短的表示法
Runnable addMilk = () -> { System.out.println("adding milk"); };
如果您想返回一个值,还可以调用
runnable
,将每个方法定义为runnable
,然后将它们添加到数组中,并通过调用run()
对每个方法进行迭代
像
使用新的Java8Lambda运算符可以使用更短的表示法
Runnable addMilk = () -> { System.out.println("adding milk"); };
如果您想返回一个值,还可以调用
Callable
,Java提供了接口Runnable
,方法run()
允许将功能作为对象传递。(任何其他接口也可以允许这样做,但Runnable
是Java中的标准)。你可以这样做:
final HashSet<Runnable> set = new HashSet<>();
set.add(new Runnable() {
public void run() {
milk(); //will execute milk()
}
});
set.add(new Runnable() {
public void run() {
doSomething(); //will execute doSomething()
}
});
// and so on
for(Runnable r : set) {
r.run(); //will execute each Runnable in the set
}
Java提供了接口
Runnable
,其方法run()
允许将功能作为对象传递。(任何其他接口也可以允许这样做,但Runnable
是Java中的标准)。你可以这样做:
final HashSet<Runnable> set = new HashSet<>();
set.add(new Runnable() {
public void run() {
milk(); //will execute milk()
}
});
set.add(new Runnable() {
public void run() {
doSomething(); //will execute doSomething()
}
});
// and so on
for(Runnable r : set) {
r.run(); //will execute each Runnable in the set
}
阅读。@marounnaroun:我认为使用一组接口,如Runnables或Callables,更好地服务于原始海报。您可以使用Java 8和方法引用,如
MyClass::milk
等。Runnable/Callable对您的案例也很有效,我想..请阅读。@Marounnaroun:我认为使用一组接口,如Runnable或Callable,会更好地服务于原始海报。您可以使用Java 8和方法引用,如MyClass::milk
等。Runnable/Callable对你的情况也很好,我想..但是如何从这个集合中删除例如milk()。@Ikciwor-你从集合中删除它。@Ikciwor你的意思是在它执行之后吗?@MinecraftShamrock是的,确切地说是milk,不是其他任何东西但是如何删除例如milk()从这组中?@Ikciwor-你将它从组中移除。@Ikciwor你的意思是在它执行后?@MinecraftShamrock是的,确切地说是牛奶,而不是其他任何东西