覆盖Java中没有子类化的方法

时间:2011-05-13 13:33:31

标签: java override

我最近开始了一个新项目,第一次看到了如下所示的覆盖使用。

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

基本上,它覆盖了thinkworks xstream api中XStream类的wrapMapper()方法,但没有让SomeClass扩展XStream类。我和Java一起工作了很多年,但这是我第一次看到这样的压倒一切。有人可以解释它的内外情况吗?感谢。

5 个答案:

答案 0 :(得分:7)

答案 1 :(得分:2)

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

答案 2 :(得分:1)

的新实施
  

wrapMapper(MapperWrapper next)

方法仅适用于此实例xstream

  

XStream xstream

这种类型的覆盖是创建一个扩展XStream的类,这就是为什么它被称为Anonymous,没有名称而且你没有它的引用。

答案 3 :(得分:0)

这被称为“匿名类”。您可以在Internet上找到有关此特殊语法的大量文档。祝你好运。

答案 4 :(得分:0)

在Google中搜索Java中的匿名内部类

在具体对象上实现接口或抽象类方法非常有用

使用线程(Runnable类)

时会大量使用