当前位置: 首页 > 知识库问答 >
问题:

在数组中存储方法和函数

麹承
2023-03-14

我不知道它是否可行,但我可以在数组中存储方法或函数吗?我现在知道多维数组,并使用它来存储我想要的许多数组。我现在想做的是将我创建的方法或函数存储在某个类中。因为我想将所有函数存储到某个类中,如果我想使用循环,就调用它。并使我的编码更简洁易懂。例子:

public String[] getDesiredFunction = {getName(),getLastname(),getMiddle()};
for(int i = 0;i<3;i++){
    if(i == 1){
        getDesiredFunction[i];
    }
}

像那样?可能吗?

共有3个答案

巫新知
2023-03-14

Java不太适合您的用例。这可能与反射有关。

作为起点,您可以查看反射轨迹或查看相关的stackoverflow问题。

戈念
2023-03-14

Java 6没有一阶函数,但可以使用函数对象模式:

interface NullaryFunction< B > {
    B f();
}

public class Example {
    private final Map< String, NullaryFunction< String > > mFuncs = new HashMap< String, NullaryFunction< String > >() { {
        put( "getName", fncGetName );
        put( "getLastname", fncGetLastname );
        put( "getMiddle", fncGetMiddle );
    } };
    public String getName() { /* ... */ }
    private NullaryFunction< String > fncGetName = new NullaryFunction< String >() {
        @Override String f() { return getName(); }
    };
    public String getMiddle() { /* ... */ }
    private NullaryFunction< String > fncGetMiddle = new NullaryFunction< String >() {
        @Override String f() { return getMiddle(); }
    };
    public String getLastname() { /* ... */ }
    private NullaryFunction< String > fncGetLastname = new NullaryFunction< String >() {
        @Override String f() { return getLastname(); }
    };

    public String runAFunction( String strName ) {
        return mFuncs.get(strName).f();
    }
}
潘嘉颖
2023-03-14

你不能完全做你想做的,但是可以使用接口做类似的事情:

interface Function {
    public void run();
}

class GetNameFunction implements Function {
    public void run() {
        //do stuff
    }
}
...

然后你可以这样写:

Function[] functions = {new GetNameFunction()};
    for(int i = 0; i < functions.length; i++){
        functions[i].run();
    }
}
 类似资料:
  • 问题内容: 好吧,我写了一些代码,我所做的只是for循环,但是更改了我调用的方法。我尝试使用for循环,这样会更整洁(出于好奇,看是否可以完成),但是当我这样做时它不会编译,因为它无法识别其中的项目我认为将数组作为一种方法。这就是我所拥有的: 当我尝试编译时,我得到 (它引用while循环中的第一条语句) 所以,我认为这可能是因为我将其设置为String类型的Array?有方法类型吗?这是可能吗?

  • 问题内容: 我在AI项目上使用Redis。 这个想法是让多个环境模拟器在许多cpu内核上运行策略。模拟器将体验(状态/操作/奖励元组列表)写入Redis服务器(重播缓冲区)。然后,培训过程将经验作为数据集读取以生成新策略。将新策略部署到模拟器,删除先前运行的数据,然后继续该过程。 大部分经验都记录在“状态”中。通常将其表示为尺寸为80 x 80的大型numpy数组。模拟器会以cpu允许的最快速度生

  • 问题内容: 我想将方法​​返回的数组存储到另一个数组中。我怎样才能做到这一点? 当我调用此方法时,如何将返回的数组(z)存储到另一个数组中? 问题答案: 上面的方法不返回数组本身,而是返回对该数组的引用。在调用函数中,您可以在另一个引用中收集此返回值,例如: 此后还将引用之前引用的同一数组。 如果这不是您想要的,并且要创建阵列的副本,则可以使用创建副本。

  • 问题内容: 例如: 这可能吗?最好的选择是什么? 问题答案: 推荐的方法是使用匿名函数: 如果要存储已经声明的函数,则可以简单地通过名称将其引用为字符串: 在PHP的旧版本(<5.3)中,不支持匿名函数,您可能需要诉诸使用(自PHP 7.2起已弃用): 所有这些方法在伪类型的文档中列出。 无论选择哪种功能,都可以直接调用该函数(PHP≥5.4)或使用:

  • 问题内容: 我是Java新手。我如何在HashMap中存储整数值数组,之后我将此HashMap写到txt文件中,但此刻目前不重要。我可以存储单个字段,但不能存储数组。有任何想法吗 ? 问题答案: 例如选一个 要不就

  • 问题内容: 我试图了解Java中的数组设置。创建数组后,为什么必须为数组中的每个对象初始化空间。它是如何存储在内存中的,如下所示: 或像这样: 换句话说,实际上是在内存中执行的操作。是否仅返回对内存中保留位置的引用,并且该语句沿10个指针的行创建内容,这些指针随后由新语句分配? 问题答案: 阵列,Java软件商店的两件事情之一:要么基本值(,,…)或引用(又名指针)。 因此,仅为10个引用创建空间