📜  在Java中使用预定义的类名作为类或变量名

📅  最后修改于: 2022-05-13 01:55:21.549000             🧑  作者: Mango

在Java中使用预定义的类名作为类或变量名

在Java中,允许使用预定义的类名作为类名或变量名。但是,根据Java规范语言(第 3.9 节), Java中命名的基本规则是不能使用关键字作为类名、变量名或用于包的文件夹名。
在Java中使用任何预定义类都不会导致编译器错误,因为Java预定义类不是关键字。

以下是Java中的一些无效变量声明:

boolean break = false; // not allowed as break is keyword
int boolean = 8; // not allowed as boolean is keyword
boolean goto = false; // not allowed as goto is keyword
String final = "hi"; // not allowed as final is keyword

使用预定义的类名作为用户定义的类名

  1. 问题:我们可以将我们的类名作为程序中预定义的类名之一吗?
    答:是的,我们可以拥有它。下面是使用Number作为用户定义类的示例
    // Number is predefined class name in java.lang package
    // Note : java.lang package is included in every java program by default
    public class Number
    {
        public static void main (String[] args)
        {
            System.out.println("It works");
        }
    }
    

    输出:

    It works
    
  2. 使用字符串作为用户定义的类:
    // String is predefined class name in java.lang package
    // Note : java.lang package is included in every java program by default
    public class String
    {
        public static void main (String[] args)
        {
            System.out.println("I got confused");
        }
    }
    

    但是,在这种情况下,您将收到如下运行时错误:

    Error: Main method not found in class String, please define 
    the main method as:
       public static void main(String[] args)
    

    解释:这是因为主线程正在寻找带有预定义字符串类数组参数的方法()。但是在这里,它得到了带有用户定义的 String 类的main method()。每当主线程看到一个类名时,它都会尝试按范围搜索该类范围。首先它会在你的程序中看到,然后在你的包中。如果没有找到,那么 JVM 遵循委托层次原则来加载该类。因此你会得到运行时错误。
    为了运行上面的程序,我们还可以提供 String 类的完整路径,即Java.lang.String

    // String is predefined class name in java.lang package
    // Note : java.lang package is included in every java program by default
    public class String
    {
        public static void main (java.lang.String[] args)
        {
            System.out.println("I got confused");
        }
    }
    

    输出:

    I got confused
    

使用预定义的类名作为用户定义的变量名

问题:我们可以将变量名作为程序中预定义的类名之一吗?
答:是的,我们可以拥有它。

// Number is predefined class name in java.lang package
// Note : java.lang package is included in every java program by default
public class Number
{
    // instance variable
    int Number = 20;
      
    public static void main (String[] args)
    {
        // reference variable
        Number Number = new Number();
          
        // printing reference
        System.out.println(Number);
          
        // printing instance variable
        System.out.println(Number.Number);
    }
}

输出:

Number@15db9742
20