c# - 将 C# Func<> 移植到 Java- Math Equation

标签 c# java porting

我正在将 C# 库移植到 Java(用于非线性回归,原始代码 here)。该库使用 Java 中不存在的 Func<> 类。 IE。 (A、B、C、D和时间是用于回归的参数,不需要固定。)

Func<double>[] regressionFunctions = new Func<double>[]
{() => A * Math.Exp(time) * Math.Sin(B * time),
() => C * Math.Exp(time) * Math.Cos(D * time)}; 

我想做的是将其转换为 Java 代码。我看到了一些关于创建匿名内部类的内容,但我不确定这种特定情况下的正确用法。我希望以后可以对方程式进行评估(对于特定的 t 值)。我需要一个新类、一个接口(interface),还是最好的方法? 任何帮助,将不胜感激!提前致谢。

最佳答案

您可以定义自己的接口(interface),并使用匿名实现来移植代码:

// Declaring the interface
interface FuncDouble {
    double calculate();
}

public LevenbergMarquardt(FuncDouble[] regressionFunctions, ...) {
    // Using the functor:
    double functionValue = _regressionFunctions[i].calculate()
}

// Declaring an array of functors:
FuncDouble[] regressionFunctions = new FuncDouble[] {
    new FuncDouble() {
        public double calculate() {
            return A * Math.Exp(time) * Math.Sin(B * time);
        }
    }
,   new FuncDouble() {
        public double calculate() {
            return C * Math.Exp(time) * Math.Cos(D * time);
        }
    }
};

为了使实现工作,ABCDtime 变量必须是实例/类变量,或者是 final 局部变量。

关于c# - 将 C# Func<> 移植到 Java- Math Equation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11124668/

相关文章:

C# 传递结构作为参数

java - MyBatis 调用带有返回值和 out 参数的存储函数

java - J2ME 中的 HTTP PUT 方法

java - .NET 的 XmlSerializer 的 Java 替代方案是什么

freebsd - 为使用 NPM 而不是 Make 的应用程序创建一个新的 FreeBSD 端口

asp.net - 经典 ASP 端口 -- 如何替换 #INCLUDE (.inc) 文件

c# - 在这种情况下,可以更好地替代许多嵌套的 if 语句吗?

c# - ApplicationServices(根)IServiceProvider 和注入(inject)的 IServiceProvider 有什么区别?

c# - 对于具有多个 == 运算符覆盖的类,空检查是不明确的

java - 如何在 javascript 页面中添加我的 java 业务代码?