2010-06-16 19 views
7

Desidero utilizzare un Enum per rappresentare alcuni valori di selezione. Nella cartella /src/groovy, sotto il pacchetto com.test, ho questo Enum:Come utilizzare Enum in Grails (non nella classe di dominio)

package com.test 

public enum TabSelectorEnum { 
    A(1), B(2) 

    private final int value 
    public int value() {return value} 

} 

Ora, sto cercando di accedervi dal regolatore come:

TabSelectorEnum.B.value() 

ma genera un'eccezione:

Caused by: org.codehaus.groovy.runtime.InvokerInvocationException: java.lang.NoClassDefFoundError: Could not initialize class com.test.TabSelectorEnum 

Cosa sto sbagliando?


Aggiornamento: Dopo aver pulito e ricompilato, il codice di errore cambiato in:

groovy.lang.GroovyRuntimeException: Could not find matching constructor for: com.test.TabSelectorEnum(java.lang.String, java.lang.Integer, java.lang.Integer) 

Sembra che ci sia qualcosa di sbagliato nel modo in cui accedere al valore della Enum, ma non lo faccio sai cosa.

risposta

15

Lei non ha definito un costruttore per il valore int:

package com.test 

enum TabSelectorEnum { 
    A(1), 
    B(2) 

    private final int value 

    private TabSelectorEnum(int value) { 
     this.value = value 
    } 

    int value() { value } 
} 
Problemi correlati