2013-04-23 10 views
10

Mam klasy tak:Wiosna: Jak wprowadzić ENUM w konfiguracji Spring z generycznymi?

public class CheckSetFilter<E extends Enum<E>> 
{ 
    public CheckSetFilter(CheckSetManager<E> pCheckSetManager, E pCheckSetId) 
} 

mam ten ENUM:

public enum StubCheckId 
{ 
    STUBCHECK1, STUBCHECK2 
} 

staram się stworzyć taki obiekt z wiosny:

<bean id="checkSetFilter" class="com.iba.icomp.core.checks.CheckSetFilter"> 
    <constructor-arg ref="checkSetManager"/> 
    <constructor-arg value="STUBCHECK1"/> 
</bean> 

narzeka, nie może konwertować z ciągu na Enum. Sądzę, że dzieje się tak z powodu generycznych. Nie może znać typu enum do stworzenia. Próbowałem też dać mu wskazówkę, ale bez powodzenia.

Odpowiedz

23

Wszystko, co naprawdę trzeba zrobić, to dodać value tag wewnątrz tag constructor-arg.

<bean id="checkSetFilter" class="com.iba.icomp.core.checks.CheckSetFilter"> 
    <constructor-arg ref="checkSetManager"/> 
    <constructor-arg> 
     <value type="your.package.StubCheckId">STUBCHECK1</value> 
    </constructor-arg> 
</bean> 
+0

całkowita zbieżność przysięgam :) FYI Wszystko 'zajęcia enum' rozszerzyć klasę abstrakcyjną [' Enum > '] (http://docs.oracle.com/javase/7/docs/ api/java/lang/Enum.html), gdzie 'E' jest typem tej implementacji' enum'. Tak więc parametr typu E rozszerza Enum 'oznacza po prostu" trochę typu wyliczeniowego ". –

+1

@PaulBellora Chcesz sprawdzić moją nową odpowiedź i zobaczyć, czy ci się to podoba :-) Zaktualizowałem te same generics jak w pytaniu. – maba

Powiązane problemy