В Java я могу объявить переменную, имя которой совпадает с именем ее класса. Я думаю, что это очень запутанный и странный дизайн.
Итак, у меня есть проблема в приведенном ниже фрагменте кода: как компилятор может отличить ClassName, на него ссылаются имя переменной или имя класса?
В результатах выполнения компилятор ссылается на ClassName как имя переменной.
class ClassName{}
public class Test {
public static void main(String[] args){
ClassName ClassName = new ClassName();
System.out.println(ClassName); //ClassName@18fb53f6
}
}