首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Groovy -附加到仅通过getter-setter提供的列表

Groovy -附加到仅通过getter-setter提供的列表
EN

Stack Overflow用户
提问于 2017-11-02 14:02:52
回答 2查看 163关注 0票数 1

在Groovy类中,我希望通过getter和setter将内部String属性公开为List。我希望该属性的行为就像一个常规的list属性,我可以使用obj.list << newElement向该属性添加元素。然而,它不工作,我必须使用工作-周围的obj.list = obj.list << newElement

在Groovy中还有其他方法可以完成这个任务吗?要在类中实现的方法,在使用<<运算符时将被调用?

代码示例:

代码语言:javascript
复制
class Test {

    String internal = 'a,b,c'

    List getList() {
        return internal .split(',')
    }

    void setList(List list) {
        internal = list.join(',')
    }

}

def t = new Test()
println t.internal          // a,b,c
println t.list              // [a, b, c]
t.list << 'd'               // this does not work! does not add new element
println t.list              // [a, b, c] 
t.list = t.list << 'd'      // work-around that works
println t.list​​              // [a, b, c, d]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-02 15:40:06

请考虑以下几点:

代码语言:javascript
复制
class Test {
    String internal = 'a,b,c'

    List getList() {
        def list = internal.split(',') as List

        // this will override so:
        // << 'd'       becomes appendToList(['d'])
        // << ['e','f'] becomes appendToList(['e','f'])
        list.metaClass.leftShift = { def x ->
            this.appendToList([x].flatten())
        } 

        return list
    }

    void appendToList(List list) {
        internal = internal + "," + list.join(',')
    }

    void setList(List list) {
        internal = list.join(',')
    }
}

注它处理以下两种情况:(a)一项(b)一项清单

代码语言:javascript
复制
def t = new Test()
t.list << 'd'
assert ['a','b','c','d'] == t.list
t.list << ['e','f']
assert ['a','b','c','d','e','f'] == t.list
t.list = ['x','y']
assert ['x', 'y'] == t.list
票数 1
EN

Stack Overflow用户

发布于 2017-11-02 14:18:10

尝试使用以下代码,

代码语言:javascript
复制
Test t = new Test()
 List list = t.getList()
list << 'd'

println list.dump()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47077223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档