Можно ли динамически добавлять свойство в класс Groovy из строки?
Например, я прошу пользователя вставить строку, скажем, 'HelloString'
И добавлю свойство HelloString в существующее Groovy glass?Добавить свойство from string в класс Groovy
2
A
ответ
4
Существует несколько способов борьбы с этим. Например. Вы можете использовать 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
на карте в качестве хранилища:
class C {
@Delegate Map<String,Object> expandoStyle = [:]
}
def c = new C()
c."This also" = 42
println c."This also"
И это, как вы установите свойство с помощью вар:
def userInput = 'This is what the user said'
c."$userInput" = 666
println c."$userInput"
1
Если имя свойства и значения свойств, каждый динамический, вы может сделать что-то вроде этого:
// these are hardcoded here but could be retrieved dynamically of course...
def dynamicPropertyName = 'someProperty'
def dynamicPropertyValue = 42
// adding the property to java.lang.String, but could be any class...
String.metaClass."${dynamicPropertyName}" = dynamicPropertyValue
// now all instances of String have a property named "someProperty"
println 'jeff'.someProperty
println 'jeff'['someProperty']
Смежные вопросы
- 1. Добавить свойство string в свойство DateTime
- 2. Добавить свойство объекта from input.value
- 3. добавить модуль расширения в класс groovy
- 4. добавить dataitem (from string array) в listview
- 5. Groovy string replace добавить новую строку
- 6. Sub string from String
- 7. Добавить новое свойство в дозвуковой частичный класс
- 8. Преобразование общего типа FROM string
- 9. NHibernate - Добавить новое свойство в класс
- 10. Добавить свойство в существующий класс VBA
- 11. Как добавить свойство в класс без переопределения?
- 12. Удалить Backtick From String
- 13. Groovy csv to string
- 14. Groovy String оценка runtime
- 15. Groovy свойство итерации
- 16. Groovy String заменяем ссылкой
- 17. Groovy json string empty
- 18. groovy string форматирование
- 19. Поздняя привязка Groovy String?
- 20. Добавить свойство json string с jackson json
- 21. Анонимный внутренний класс в groovy
- 22. Параметр Groovy «String ...»
- 23. Groovy - String каждый метод
- 24. Groovy - добавить свойство или метод динамически в metaClass этого
- 25. Groovy pop min from array
- 26. Groovy read values from xml
- 27. grails oauth from groovy script
- 28. свойство используется класс linq
- 29. XMLGregorianCalendar from String error
- 30. WebTarget from String
Действительно всеобъемлющий ответ! Ницца! – Opal