【问题标题】:Class name conflict importing new package (java)类名冲突导入新包(java)
【发布时间】:2011-11-24 17:22:48
【问题描述】:

首先,我是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 { ... }

谢谢。

【问题讨论】:

    标签: java class lwjgl


    【解决方案1】:

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

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

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

    【讨论】:

    • @Cornelius:不要导入Display类,需要的时候使用全名,会编译的。
    • 好的,我认为这不是正确的做法。
    • 是否有任何版本的 Java 具有将完全限定名称别名为短名称的功能,因此您实际上不必将完全限定名称放在任何地方?像import org.lwjgl.opengl.Display as OglDisplay; 然后OglDisplay display = new OglDisplay();
    【解决方案2】:

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

    public class Foo {
    
    private static class Display {...}
    
    }
    

    也将有助于解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-16
      • 2019-10-20
      • 1970-01-01
      • 2021-06-06
      • 1970-01-01
      • 2019-05-18
      • 2018-12-18
      相关资源
      最近更新 更多