Skip to content

Instantly share code, notes, and snippets.

@fumokmm
Created October 11, 2010 02:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fumokmm/619899 to your computer and use it in GitHub Desktop.
Save fumokmm/619899 to your computer and use it in GitHub Desktop.
// g100pon No.55 multi method dispatching
def typeOf(Object o) { 'This is Object' }
def typeOf(String s) { 'This is String' }
def typeOf(Integer i) { 'This is Integer' }
def typeOf(List l) { 'This is List' }
def typeOf(Map m) { 'This is Map' }
Object o = new Object()
assert typeOf(o) == 'This is Object'
assert o.class.name == 'java.lang.Object'
Object s = "hogehoge"
assert typeOf(s) == 'This is String' // => Javaでは'This is Object'になる
assert s.class.name == 'java.lang.String' // => JavaでもこれはString
Object i = 123
assert typeOf(i) == 'This is Integer' // => Javaでは'This is Object'になる
assert i.class.name == 'java.lang.Integer' // => JavaでもこれはInteger
Object l = ['a', 'b', 'c', 1, 2, 3]
assert typeOf(l) == 'This is List' // => Javaでは'This is Object'になる
assert l.class.name == 'java.util.ArrayList' // => JavaでもこれはArrayList
Object m = ['a':1, 'b':2, 'c':3]
assert typeOf(m) == 'This is Map' // => Javaでは'This is Object'になる
assert m.getClass().name == 'java.util.LinkedHashMap' // => JavaでもこれはLinkedHashMap
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment