开发者

overriding methods without subclassing in Java

I started on a new project recently and saw the usage of overriding like below for the first time.

public class SomeClass {
  public void myMethod() {
    XStream xstream = new XStream() {
            @Override
            protected MapperWrapper wrapMapper(MapperWrapper next) {
                return new MapperWrapper(next) {
 // the rest ommitted

Basically, it's overriding the wrapMapper() method of the XStream class in the thoughtworks xstream api but without having SomeClass to extend the XStream class. I've worked with Java for a number of years but this is the first time I saw overriding being done like this. Can someone explain the ins 开发者_如何学JAVAand out of it? Thanks.


That's an Anonymous Inner Class.


In this case the XStream class is an anonymous inner class. Then you're overriding the method of your anonymous XStream class.


The new implementation for

wrapMapper(MapperWrapper next)

method is limited for this instance xstream

XStream xstream

this type of overriding is creating a class that extends XStream, that's why it is called Anonymous, do not have a name and you can not have a reference for it.


That is called an "Anonymous class". You can find a lot of documentation about this special syntax on Internet. Good luck.


Search Google for Anonymous Inner Class in Java

That's pretty useful to implement interfaces or abstract Class methods on concrete objects

That's heavily used when working with threading (Runnable class)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜