2011-05-13 56 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的,這就是爲什麼它被稱爲匿名類,不具有名稱和你不能有一個參考。