2011-05-13 69 views
9

我最近从一个新项目开始,第一次看到下面的覆盖类型的用法。在Java中没有子类化的覆盖方法

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

基本上,它覆盖在所述ThoughtWorks的XStream的类的wrapMapper()方法XSTREAM API,但无需SomeClass的延长XStream的类。我已经与Java合作多年,但这是我第一次看到重写这样做。有人可以解释它吗?谢谢。

回答

2

在这种情况下,XStream类是一个匿名内部类。然后你重写你的匿名XStream类的方法。

0

这被称为“匿名类”。你可以在Internet上找到关于这个特殊语法的很多文档。祝你好运。

0

搜索谷歌的匿名内部类在Java中

这是非常有用的,以落实具体的对象的接口或抽象类方法

与线程(运行的类)

1

新的工作时,这是大量使用实施

wrapMapper(MapperWrapper未来)

方法限于此实例的XStream

的XStream XStream的

这种压倒一切的是创建一个扩展XStream的,这就是为什么它被称为匿名类,不具有名称和你不能有一个参考。