返回类型与。不兼容

时间:2013-04-12 18:16:27

标签: java inheritance override three.js lwjgl

背景

我正在为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返回,如果不允许,我是否应该为此调用创建一个单独的方法名称?有没有办法完全覆盖超类方法并忽略它?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

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

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