Почему некоторые люди используют в переписке метод Class# вместо Class.method?

При описании методов в Java (т. е. на форумах, в списках рассылки, средствах отслеживания проблем и т. д.) многие люди отделяют имя метода от имени класса, используя символ «#» вместо родного оператора Java .; например, люди обращаются к Object#toString вместо Object.toString. Откуда этот синтаксис?


person Kevin Welker    schedule 28.06.2012    source источник
comment
Точечную нотацию можно рассматривать как код, где в Object.toString Object будет экземпляром, иначе toString будет статическим методом. Обозначение тире — это Javadoc, и это понятно.   -  person maksimov    schedule 28.06.2012


Ответы (1)


Это обозначение, используемое в комментариях javadoc при ссылке на метод другого класса.

РЕДАКТИРОВАТЬ

Чтобы собрать дополнительную информацию, указанную в комментариях:

  • @Hugo отмечает, что нотация #, в свою очередь, происходит от привязок HTML.
  • @maksimov указывает, что Object.method — это синтаксис Java для вызова статических методов, что может ввести в заблуждение.

ОБНОВИТЬ

В Java 8 появился новый синтаксис для ссылок на методы, который сейчас становится все более популярным, поэтому Object#toString теперь записывается как Object::toString.

person assylias    schedule 28.06.2012
comment
Это, в свою очередь, исходит из привязок HTML, которые представлены с использованием этой нотации, поскольку каждый метод является привязкой, если генерируется HTML-документ Javadoc. - person WhyNotHugo; 28.06.2012
comment
все имеет смысл. Я могу начать использовать его сейчас, но я должен признать, что это довольно уродливо, и мне трудно его читать. Но он обеспечивает устранение неоднозначности в случае вызова статического метода. - person Kevin Welker; 28.06.2012
comment
Но что, если Object в нижнем регистре? - person Ruchir Baronia; 03.04.2016
comment
Нижний или верхний регистр значения не имеет. Однако на основе javadoc класс будет в верхнем регистре, а экземпляр объекта в нижнем регистре: Object obj. Когда вы хотите сослаться на реализацию метода, вы должны использовать Object#method. В противном случае, если вы говорите о конкретном вызове, вы можете использовать obj.method(). - person Koenigsberg; 11.09.2018