Java 名为“的用户”;系统“;类搞乱了System.out.println

Java 名为“的用户”;系统“;类搞乱了System.out.println,java,intellij-idea,Java,Intellij Idea,我有一个名为System的类,但是,当我尝试在其他类中使用System.out.println时,它返回错误:“无法解析符号'out'”。我假设使用我创建的系统类,而不是Java语言包中的实际系统类。有没有办法让Intellij使用Java语言中的System类,或者这只是一个普通类的名称矛盾,我不应该对任何用户创建的类使用类似“System”的名称?检查导入语句。您可能正在将自己的系统类导入到类文件中。如果是这样的话,任何时候只要引用系统,该类文件就会使用您的导入 如果您坚持使用“System

我有一个名为System的类,但是,当我尝试在其他类中使用System.out.println时,它返回错误:“无法解析符号'out'”。我假设使用我创建的系统类,而不是Java语言包中的实际系统类。有没有办法让Intellij使用Java语言中的System类,或者这只是一个普通类的名称矛盾,我不应该对任何用户创建的类使用类似“System”的名称?

检查导入语句。您可能正在将自己的
系统
类导入到类文件中。如果是这样的话,任何时候只要引用
系统
,该类文件就会使用您的导入

如果您坚持使用“System”作为自己的类名(不一定推荐),那么您可以在代码中使用完全限定的
java.lang.System.out.println()

我的建议是将您的
系统
类重命名为不同的名称。就个人而言,我在项目中使用
实用工具
类来提供可能属于“类似系统”类别的自定义方法


当然也有例外,但一个好的一般规则是不要将自己的类命名为与
java.lang
项目中的任何类相同的类。这些类是Java语言不可或缺的一部分,您可能只会给您自己和其他试图阅读和理解您的代码的人带来困惑。

您可以使用
Java.lang.System.out.println(…)
引用
Java.lang.System
。但是,我不建议您命名自己的类系统。换句话说,这是使用用于打印的系统类的完全限定名来访问其方法。虽然未启用此选项,但它将回答您的问题:获得创造性。。。如果可能的话,请给您的类命名其他名称以解决此冲突。“我有一个名为
System
…”的类,这就是您的问题!最好的解决方案是重命名
系统
类。(您看到的是标准的Java语言语义,而不是IDE所做的。)声明一个自定义类,其名称与
Java.lang
包中的任何类发生冲突是一个坏主意。“更改类的名称太简单了”-把头撞在砖墙上的秘诀是知道何时停止:-)