Groovy / grails 데이터 유형을 결정하는 방법은 무엇입니까?


176

groovy에서 데이터 유형을 결정하는 가장 좋은 방법은 무엇입니까?

날짜 등의 경우 출력을 다르게 형식화하고 싶습니다.

답변:


244

객체의 클래스를 결정하려면 다음을 호출하십시오.

someObject.getClass()

someObject.class대부분의 경우 이것을 축약 할 수 있습니다 . 그러나 이것을 사용하면 Map키 'class'로 값을 검색하려고 시도합니다. 이 때문에 항상 사용합니다getClass() 조금 더 길어도 합니다.

객체가 특정 인터페이스를 구현하거나 특정 클래스 (예 : 날짜)를 확장하는지 확인하려면 다음을 사용하십시오.

(somObject instanceof Date)

또는 객체 의 클래스가 서브 클래스가 아닌 특정 클래스 인지 정확히 확인 하려면 다음을 사용하십시오.

(somObject.getClass() == Date)

2
instanceof인터페이스를 기반으로 필터링하는 데 좋습니다.
cdeszaq

최신 그루비 (2.3.7)에서 적어도, 우리는 또한 someObject.class를 쓸 수 있습니다
loloof64

5
대부분의 경우에 작동하지만 모든에서, 예를 들면 @LaurentBERNABE Map
DONAL

당신이 맞습니다 :이 경우 우리는 null을 얻습니다. 실수로 사과드립니다.
loloof64

그럼이게 뭐야? def test = {} println test.getClass() Script1 $ _run_closure1 클래스
Petrunov

33

객체 유형을 확인하는 간단한 그루비 방법 :

somObject in Date

인터페이스에도 적용 할 수 있습니다.


3

Dónal의 답변에 다른 옵션을 추가하기 위해 여전히 좋은 java.lang.Object.getClass()방법을 사용할 수 있습니다 .


0

멤버쉽 연산자 isCase ()를 사용할 수 있습니다.

assert Date.isCase(new Date())

-20

somObject instanceof Date

해야한다

somObject instanceOf Date


11
이것은 정확하지 않습니다. instanceof모두 소문자 여야합니다.
cdeszaq
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.