When writing about methods in Java (e.g. in forums, mailing lists, issue trackers, etc.) many people separate the method name from the class name using the '#' symbol instead of Java's native .
operator; for example, folks refer to Object#toString
instead of Object.toString
. Where does this syntax come from?
Asked
Active
Viewed 6,147 times
33

Mark Rotteveel
- 100,966
- 191
- 140
- 197

Kevin Welker
- 7,719
- 1
- 40
- 56
-
3Dot notation may be seen as code, where in Object.toString `Object` will be an instance or otherwise `toString` will be a static method. Dash notation is Javadoc and so is clear. – maksimov Jun 28 '12 at 15:36
1 Answers
31
It's the notation used in javadoc comments when linking to another class' method.
EDIT
To gather the additional information provided in comments:
- @Hugo notes that the
#
notation in turn comes from HTML anchors - @maksimov points out that
Object.method
is the Java syntax to call static methods, which could be misleading
UPDATE
Java 8 brings a new syntax for method references, which now seems to become more popular - so Object#toString
tends to now be written Object::toString
.

assylias
- 321,522
- 82
- 660
- 783
-
4This, in turn, comes from HTML Anchors, which are represented using this notation, since each method is an anchor if the HTML javadoc in generated. – WhyNotHugo Jun 28 '12 at 15:34
-
all makes sense. I may start to use it now, but I have to admit it is quite ugly and I find it harder to read. But it does provide disambiguation in the case of static method invocations. – Kevin Welker Jun 28 '12 at 17:23
-
-
Lowercase or uppercase is irrelevant. However based on javadoc, the class will be uppercase, an object instance lowercase: `Object obj`. When you want to refer to the method implementation you are supposed to use `Object#method`. Otherwise if you are talking about a specific call, then you can go with `obj.method()`. – Koenigsberg Sep 11 '18 at 10:52