string에서 Groovy 클래스에 동적으로 속성을 추가 할 수 있습니까?
예를 들어, 문자열을 삽입하도록 사용자에게 요청합니다. 'HelloString'
그리고 HelloString 속성을 기존 Groovy 유리에 추가합니까?문자열에서 Groovy 클래스로 속성 추가
2
A
답변
4
이 문제를 해결할 수있는 방법은 여러 가지가 있습니다. 예 :
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!"
,369 : 당신은 당신이 단지
Expando
클래스를 사용하여
ExpandoMetaClass
class Book { String title } Book.metaClass.getAuthor << {-> "Stephen King" } def b = new Book("The Stand") assert "Stephen King" == b.author
또는를 사용하여 기존 클래스에 대한 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
(모든 클래스)를 사용할 수 있습니다
또는 저장 등의지도에 @Delegate
:
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"
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. Java에서 Groovy 객체에 속성 추가
- 2. Groovy : enum의 델리게이트 속성
- 3. Groovy 기본 스크립트의 속성
- 4. groovy 인터페이스 메소드의 속성
- 5. Groovy 속성 정의
- 6. 형식화 된 문자열에서 값 읽기 Java, Groovy
- 7. Groovy 클래스를 기존 Java 클래스로 컴파일 하시겠습니까?
- 8. Jmeter의 Groovy 파일에 추가
- 9. Groovy : NodeChildren에 노드 추가
- 10. Groovy MarkupBuilder 또는 StreamingMarkupBuilder에 동적 요소 및 속성 추가
- 11. Groovy DSL : 클로저의 속성 설정
- 12. groovy - xml - 속성 순서 유지
- 13. Groovy 속성 또는 메서드에 액세스
- 14. 객체 당 Groovy 동적 속성
- 15. groovy : 속성 파일에 액세스하는 방법?
- 16. Groovy : 부모 클래스의 속성 액세스
- 17. Groovy : 문자열에서 평가 된 시간 - 뺄셈
- 18. 문자열에서 단순 양식의 속성
- 19. 메타 클래스로 속성 유형 제한
- 20. groovy enums에 인터페이스를 추가 하시겠습니까?
- 21. Groovy AST - 컴파일시 주석 추가
- 22. Eclipse-Groovy 플러그인 : 새로운 Groovy 컴파일러 버전 추가
- 23. 속성 창에 속성 추가
- 24. 속성 선택기 만들기 문자열에서 표현식
- 25. 텍스트 문자열에서 속성 가져 오기
- 26. 문자열에서 CSS 속성 가져 오기
- 27. Mule Groovy 스크립트의 Spring 속성 해결
- 28. Groovy JsonBuilder : 임의의 순서로 직렬화되는 객체 속성
- 29. groovy 스크립트를 사용하여 모든 속성 값을 지우십시오.
- 30. groovy 스크립트를 SoapUI의 속성 값으로 사용하기
정말 포괄적 인 답변입니다. 좋은! – Opal