7

首先,我是java新手,所以我的问题可能很愚蠢,但我仍然需要一个答案:)

我有一个处理显示问题的课程。我将它命名为“Display”,但问题是:我需要导入一个名为 org.lwjgl.opengl.Display 的类。

当然,我的 Display 类语句中有这个错误:

“显示”已在此编译单元中定义

当然,我可以重命名我的班级,但我想确定没有办法轻松规避这个问题。

一般而言(因为使用诸如 LWJGL 之类的游戏库,我想我会有很多这样的),为我的所有课程添加前缀以避免类似的标签是一个更好的主意吗?

更新:该类已经在一个包中。

package Graphics;

import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;

public class Display { ... }

谢谢。

4

2 回答 2

31

如果你不能重命名你自己的类,这将是最简单的,那么你可以通过不导入有问题的类而是使用完全限定的包名来规避这个问题,例如

org.lwjgl.opengl.Display display = new org.lwjgl.opengl.Display().

相反,您应该将自己的类放在包中,并且永远不要使用默认包,以便可以应用相同的方法来消除您自己的类的歧义。

于 2011-09-25T17:32:47.790 回答
0

当您的 java 类名和导入库名相同时,就会发生这种情况。在您的情况下, Scanner 指的是类名而不是库。将类名更改为其他名称将是解决错误的最简单方法。

public class Foo {

private static class Display {...}

}

也将有助于解决问题。

于 2016-10-13T15:17:33.393 回答