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是的,确切地说是牛奶,而不是其他任何东西