При описании методов в Java (т. е. на форумах, в списках рассылки, средствах отслеживания проблем и т. д.) многие люди отделяют имя метода от имени класса, используя символ «#» вместо родного оператора Java .
; например, люди обращаются к Object#toString
вместо Object.toString
. Откуда этот синтаксис?
Почему некоторые люди используют в переписке метод Class# вместо Class.method?
Ответы (1)
Это обозначение, используемое в комментариях javadoc при ссылке на метод другого класса.
РЕДАКТИРОВАТЬ
Чтобы собрать дополнительную информацию, указанную в комментариях:
- @Hugo отмечает, что нотация
#
, в свою очередь, происходит от привязок HTML. - @maksimov указывает, что
Object.method
— это синтаксис Java для вызова статических методов, что может ввести в заблуждение.
ОБНОВИТЬ
В Java 8 появился новый синтаксис для ссылок на методы, который сейчас становится все более популярным, поэтому Object#toString
теперь записывается как Object::toString
.
person
assylias
schedule
28.06.2012
Это, в свою очередь, исходит из привязок HTML, которые представлены с использованием этой нотации, поскольку каждый метод является привязкой, если генерируется HTML-документ Javadoc.
- person WhyNotHugo; 28.06.2012
все имеет смысл. Я могу начать использовать его сейчас, но я должен признать, что это довольно уродливо, и мне трудно его читать. Но он обеспечивает устранение неоднозначности в случае вызова статического метода.
- person Kevin Welker; 28.06.2012
Но что, если Object в нижнем регистре?
- person Ruchir Baronia; 03.04.2016
Нижний или верхний регистр значения не имеет. Однако на основе javadoc класс будет в верхнем регистре, а экземпляр объекта в нижнем регистре:
Object obj
. Когда вы хотите сослаться на реализацию метода, вы должны использовать Object#method
. В противном случае, если вы говорите о конкретном вызове, вы можете использовать obj.method()
.
- person Koenigsberg; 11.09.2018
Object
будет экземпляром, иначеtoString
будет статическим методом. Обозначение тире — это Javadoc, и это понятно. - person maksimov   schedule 28.06.2012