2016-07-01 1 views
0

$ stMC :그루비 클래스 - 공공 정적 과도 부울 C .__ 다음과 같이 내가 단순한 더미 클래스에 메소드 <code>getFields()</code>를 사용하려고했다

class C{ 
    public int a 
    int b 
    String s 
    float f 
    static int x 
} 

내가

을 썼다

def c = new C() 
println c.class.getFields() 
내가 출력으로 무엇을 가지고 있습니다 :

[public int C.a, public static transient boolean C.__$stMC] 

사람이 설명 할 수있는 이유는 단지 a이 목록에 나타 납니까? 그리고 다른 엔터티는 무엇입니까 C.__$stMC? 온라인으로 검색 한 결과, stMC는 staticMetaClass를 나타냅니다. 명확히하십시오. 감사합니다

답변

0

문서에 따라, getFields는()는 공공 분야 반환하므로 :

중 하나를 사용 getDeclaredFields

https://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getFields()

() 또는 그루비의 메타 프로그래밍 속성, 즉 사용

def c = new C() 
println c.class.getDeclaredFields().toString() 
println c.getProperties().toString() 
+0

그러나 Groovy에서는 모든 필드가 public으로 기본 설정됩니다. 그래서,'getFields()'도 그것들을 포함해야합니다, 그렇죠? 또한 $ stMC에 대한 아이디어가 있습니까? 그것이 무엇을 의미합니까? –

+0

모든 필드에는 공용 액세스 한정자가 있습니다. 후드 아래에 obj.prop = "x"를 사용하여 값을 변경하면 실제로 메소드가 호출됩니다. 컴파일 된 Java 필드 아래에 공개되지 않습니다. –

관련 문제