public function runme() {
// create instance of an anonymous inner class that derives from Object
var counter = new Object() {
// anonymous inner classes can have variables (public, private, and so on)
private var i = 0
// anonymous inner classes can have constructors
construct() {
print("Value is " + i + " at creation!")
}
// anonymous inner classes can have methods
public function incrementMe () {
i = i + 1
print("Value is " + i)
}
}
// "counter" is a variable containing an instance of a
// class that has no name, but derives from Object and
// adds a private variable and a method
counter.incrementMe()
counter.incrementMe()
counter.incrementMe()
counter.incrementMe()
counter.incrementMe()
}
CiAgICAgcHVibGljIGZ1bmN0aW9uIHJ1bm1lKCkgewogICAgICAgIC8vIGNyZWF0ZSBpbnN0YW5jZSBvZiBhbiBhbm9ueW1vdXMgaW5uZXIgY2xhc3MgdGhhdCBkZXJpdmVzIGZyb20gT2JqZWN0CiAgICAgICAgdmFyIGNvdW50ZXIgPSBuZXcgT2JqZWN0KCkgewogICAgICAgICAgICAvLyBhbm9ueW1vdXMgaW5uZXIgY2xhc3NlcyBjYW4gaGF2ZSB2YXJpYWJsZXMgKHB1YmxpYywgcHJpdmF0ZSwgYW5kIHNvIG9uKQogICAgICAgICAgICBwcml2YXRlIHZhciBpID0gMAogICAgICAgICAgICAvLyBhbm9ueW1vdXMgaW5uZXIgY2xhc3NlcyBjYW4gaGF2ZSBjb25zdHJ1Y3RvcnMKICAgICAgICAgICAgY29uc3RydWN0KCkgewogICAgICAgICAgICAgICAgcHJpbnQoIlZhbHVlIGlzICIgKyBpICsgIiBhdCBjcmVhdGlvbiEiKQogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBhbm9ueW1vdXMgaW5uZXIgY2xhc3NlcyBjYW4gaGF2ZSBtZXRob2RzCiAgICAgICAgICAgIHB1YmxpYyBmdW5jdGlvbiBpbmNyZW1lbnRNZSAoKSB7CiAgICAgICAgICAgICAgICBpID0gaSArIDEKICAgICAgICAgICAgICAgIHByaW50KCJWYWx1ZSBpcyAiICsgaSkKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyAiY291bnRlciIgaXMgYSB2YXJpYWJsZSBjb250YWluaW5nIGFuIGluc3RhbmNlIG9mIGEKICAgICAgICAvLyBjbGFzcyB0aGF0IGhhcyBubyBuYW1lLCBidXQgZGVyaXZlcyBmcm9tIE9iamVjdCBhbmQKICAgICAgICAvLyBhZGRzIGEgcHJpdmF0ZSB2YXJpYWJsZSBhbmQgYSBtZXRob2QKICAgICAgICBjb3VudGVyLmluY3JlbWVudE1lKCkKICAgICAgICBjb3VudGVyLmluY3JlbWVudE1lKCkKICAgICAgICBjb3VudGVyLmluY3JlbWVudE1lKCkKICAgICAgICBjb3VudGVyLmluY3JlbWVudE1lKCkKICAgICAgICBjb3VudGVyLmluY3JlbWVudE1lKCkKICAgIH0K