overriding methods without subclassing in Java

别说谁变了你拦得住时间么 提交于 2019-12-03 19:56:27

问题


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 and out of it? Thanks.


回答1:


That's an Anonymous Inner Class.




回答2:


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




回答3:


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.




回答4:


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




回答5:


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)



来源:https://stackoverflow.com/questions/5992668/overriding-methods-without-subclassing-in-java

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!