2009-07-10 16 views
9

olarak kullanma. Ben bu yapılabilir NasılJava 5 enum'larını Hız değişkenleri

 
public enum Level{ 
    INFO, ERROR; 
} 

Velocity template: 

#if($var == Level.INFO) 
... 
#else 
... 
#end 

gibi bir şey yazabilirsiniz böylece, hız şablonunda java 5 enum kullanmak gerekir? Şimdiden teşekkürler.

+0

. Ayrıca, bu sadece 1 tür veya çok farklı işlemler olsun. http://stackoverflow.com/questions/859563/java-enums-and-switch-statements-the-default-case yardımcı olabilir. – bryantsai

cevap

3

Çok hoş değil, ancak bir geçici çözüm, ihtiyacınız olan enum sabitlerini Velocity bağlamına (el ile) yerleştirmektir.

Sonra
request.setAttribute('level_info', Level.INFO); 
request.setAttribute('level_error', Level.ERROR); 

Eğer

#if ($var == $level_info) 
Belki

kolay söyleyebiliriz: Onun yerine toString() kullanmak daha iyi olurdu yöntemin,

#if ("$var" == 'INFO') 
+0

Sadece merak etmek, bu gerçekten farklı mı? – bryantsai

+0

@bryantsai: $ var, String gibi INFO gibi yazdırılan başka bir nesne tutuyorsa ikinci sürüm de doğru olacaktır. Bununla birlikte, bunun bir problem olamayacağı muhtemeldir. İkinci versiyon için – Thilo

+0

+1 –

16

Aslında senin enum örneğinin toString() kullanmak name(), tam olarak enum değerini döndürdüğü için ve son olarak gelecekte geçersiz kılınamaz. Yani hız için, otomatik olarak hem bir toString() yapar, iki ürün == farklı sınıflara dahildir ile kıyaslanan eğer, Hız 1.5 itibariyle

 
#if($var.name() == "INFO") 
6

gibi bir şey kullanabilirsiniz. Bu nedenle, ne yaptığınıza bağlı olarak .. aslında .. ne yaparsanız yapın,

#if($var == "INFO")