gpt4 book ai didi

java - 热衷于使用可选参数对 JSNI 函数进行建模?

转载 作者:行者123 更新时间:2023-12-01 13:17:59 25 4
gpt4 key购买 nike

我想为以下 JavaScript 函数编写一个 GWT JSNI 包装函数。

object.cache(config);

其中 config 是具有以下可选参数的对象

- x Number
- y Number
- width Number
- height Number
- length Number

我认为我不适合将函数参数的所有可能组合重写为 Java 函数。

如何将具有许多可选参数的 JavaScript 函数建模为 JSNI Java 函数?

最佳答案

我会将配置对象建模为 JavaScriptObject:

public class Config extends JavaScriptObject {
protected Config() { }

public native final boolean hasX() /*-{ return this.x == null; }-*/;
public native final double getX() /*-{ return this.x || 0; }-*/;
public native final void setX(double x) /*-{ this.x = x; }-*/;
public native final void unsetX() /*-{ delete this.x; }-*/;


显然还有其他方法可以对其进行建模(例如使用java.lang.Double),但这一种可能是编译后的 JS 输出中最轻量级的。

或者您可以使用java.lang.Double参数,但您将为包装对象付出代价:

public native void cache(Double x, Double y, Double width, Double height, Double length) /*-{
var cache = {};
if (x != null) { cache.x = x.@java.lang.Double::doubleValue()(); }

最后,如果对您的情况有意义,您还可以使用特殊值:

var config = {};
if (x >= 0) { config.x = x; }

关于java - 热衷于使用可选参数对 JSNI 函数进行建模?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22314435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com