我最近开始了一个新项目,第一次看到了如下所示的覆盖使用。
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一起工作了很多年,但这是我第一次看到这样的压倒一切。有人可以解释它的内外情况吗?感谢。
答案 0 :(得分:7)
答案 1 :(得分:2)
在这种情况下,XStream类是一个匿名内部类。然后你将覆盖匿名XStream类的方法。
答案 2 :(得分:1)
的新实施
wrapMapper(MapperWrapper next)
方法仅适用于此实例xstream
XStream xstream
这种类型的覆盖是创建一个扩展XStream的类,这就是为什么它被称为Anonymous,没有名称而且你没有它的引用。
答案 3 :(得分:0)
这被称为“匿名类”。您可以在Internet上找到有关此特殊语法的大量文档。祝你好运。
答案 4 :(得分:0)
在Google中搜索Java中的匿名内部类
在具体对象上实现接口或抽象类方法非常有用
使用线程(Runnable类)
时会大量使用