4

问题

当代码段"new TextColumn(){...}, "MyObjectId");" 执行那么大括号最外面的代码代表什么?它是否代表 TextColumn 对象的匿名内部类实例?它是否代表 TextColumn 对象的定义?

代码

table.addColumn(new TextColumn<MyObjectProxy>() {
    Renderer<Integer> renderer = new AbstractRenderer<Integer>() {
        public String render(Integer obj) {
            return obj == null ? "" : String.valueOf(obj);
        }
    };
    @Override
    public String getValue(MyObjectProxy object) {
        return renderer.render(object.getMyObjectId());
    }
}, "MyObjectId");

如果您想知道 TextColumn 来自 com.google.gwt.user.cellview.client.TextColumn 包。

4

3 回答 3

6

那是一个匿名的内部类,它扩展了TextColumn<MyObjectProxy>. 在其中,它有一个名为renderertype的字段,该字段Renderer<Integer>使用扩展的匿名内部类的实例进行初始化AbstractRenderer<Integer>。下面还有一个方法的覆盖getValue

于 2013-02-28T20:13:36.177 回答
2

它只是定义一个匿名类并创建它的一个实例。此实例作为参数传递给方法table.addColumn

于 2013-02-28T20:13:47.177 回答
0

是的,它是一个匿名类,对应于 TextColumn 对象。

getValue() 方法被覆盖。

于 2013-02-28T20:14:44.473 回答