0

背景

我正在为 java 编写一个 three.js 并使用 LWJGL 作为后端。我正在使用 three.js 所需的方法扩展 LWJGL,但我遇到了问题。

问题

我需要为它的每个库重写 Vector2f.set 等,因为我只需要这些方法返回它们自己的行为就像 three.js。我尝试了以下方法:

@Override
public Vector2 set(float x, float y){
    super.set(x,y);
    return this;
}

Eclipse 抱怨这两种方法不兼容。您是否允许覆盖 void 返回,如果不允许,我是否应该为此调用创建一个单独的方法名称?有没有办法完全覆盖超类方法并忽略它?

4

2 回答 2

2

您可以覆盖 void 方法,但您必须使用另一个 void 方法覆盖它们。覆盖方法的返回类型和参数类型需要与其被覆盖的方法兼容。

如果您可以选择这样做,我建议您使用ArrayList而不是向量 - 向量较慢,因为它同步所有方法,这通常是多余的。

于 2013-04-12T18:17:40.493 回答
1

如果你想要链接,你可能需要

public Vector2 modify(float x, float y) {
    set(x, y);
    return this;
}

很难完美地模拟其他语言的代码。

于 2013-04-12T18:41:31.097 回答