gpt4 book ai didi

groovy - 将字符串中的属性添加到 Groovy 类

转载 作者:行者123 更新时间:2023-12-02 04:38:59 25 4
gpt4 key购买 nike

是否可以从字符串动态向 Groovy 类添加属性?
例如,我要求用户插入字符串,说“HelloString”
我将属性 HelloString 添加到现有的 Groovy glass 中?

最佳答案

有几种方法可以解决这个问题。例如。您可以使用propertyMissing

class Foo {
def storage = [:]
def propertyMissing(String name, value) { storage[name] = value }
def propertyMissing(String name) { storage[name] }
}
def f = new Foo()
f.foo = "bar"

assertEquals "bar", f.foo

对于现有类(任何类),您可以使用 ExpandoMetaClass

class Book {
String title
}
Book.metaClass.getAuthor << {-> "Stephen King" }

def b = new Book("The Stand")

assert "Stephen King" == b.author

或者仅使用 Expando 类:

def d = new Expando()
d."This is some very odd variable, but it works!" = 23
println d."This is some very odd variable, but it works!"

@Delegate到 map 作为存储:

class C {
@Delegate Map<String,Object> expandoStyle = [:]
}
def c = new C()
c."This also" = 42
println c."This also"

这就是通过 var 设置属性的方法:

def userInput = 'This is what the user said'
c."$userInput" = 666
println c."$userInput"

关于groovy - 将字符串中的属性添加到 Groovy 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25992365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com