Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我们如何创建一个与其类同名的对象?_Java_Javac - Fatal编程技术网

Java 我们如何创建一个与其类同名的对象?

Java 我们如何创建一个与其类同名的对象?,java,javac,Java,Javac,我们如何在没有编译器问题的情况下为类和对象使用相同的名称 class A{ public static void main (){ A A = new A (); } } 或 java编译器如何处理此问题?在java中,指定类名和变量名完全相同是绝对正确的。编译器理解语法,因此它知道程序的哪个部分表示标识符,哪个部分表示类名 但您永远不应该这样做,因为这将成为可读性的噩梦。绝对会误导和违反Java命名约定。最简单的答案是:因为没有任何东西说它会引起问题。但当然,

我们如何在没有编译器问题的情况下为类和对象使用相同的名称

class A{
    public static void main (){
        A A = new A ();
    }
}


java编译器如何处理此问题?

在java中,指定类名和变量名完全相同是绝对正确的。编译器理解语法,因此它知道程序的哪个部分表示标识符,哪个部分表示类名


但您永远不应该这样做,因为这将成为可读性的噩梦。绝对会误导和违反Java命名约定。

最简单的答案是:因为没有任何东西说它会引起问题。但当然,这并不是一个好主意;-)我为什么要这样做?弗洛里安先生,请再看一次这个问题。。!这是因为无论
A
是类名还是变量名,
A.someStaticMethod()
的含义都完全相同。所以没有歧义。@Jesper实际上不是。这是因为名为
a
的变量的声明在外部范围内隐藏了类
a
的声明。这纯粹是一个范围问题。不是语法。@EJP我感兴趣。。。你说的“范围界定”是什么意思?
class A{
    public static void main(){
        String String="java";
        System.out.println(String);
    }
}