2011-07-14 15 views
21

Belki yeni başlayan bir sorudur, ama neden Map<String, boolean> gibi bir şeyi yapmaya çalıştığımda neden IDE çığlıkları attığımı anlamıyorum "Sözdizimi hatası on token" boolean ", Boyutlar bu belirtecin ardından bekleniyor "Ama Boolean ile mükemmel çalışıyor. Herkes bana bunun neden böyle olduğunu açıklayabilir mi? Şimdiden teşekkürler!!Java Map "boolean" u kabul etmedi

+3

Yanıt daha genel bir sorudur: [Neden Jenerikler ilkel türleri desteklemiyor?] (Http://stackoverflow.com/questions/2721546/why-dont-generics-support-primitive-types) –

+1

Çoğu 'Harita ', bir 'Set ' ile değiştirilebilir –

cevap

42

Basitçe söylemek gerekirse: Java jenerikleri yalnızca ilk sınıf argümanlarla çalışmaz. Aynı şekilde, List<int>, yalnızca List<Integer>'u kullanamazsınız.

Daha fazla bilgi için ilgili Java Generics FAQ entry konusuna bakın.

26

Boolean yerine boole kullanın. Harita sadece nesneler içerebilir ve boolean bir nesne olmayan ilkel tiptir. Boolean, boolean'ın nesne sarıcısıdır. diğer yanıtların yanı sıra

12

, sen Map<String, Boolean> kullanmak ve onu Map<String, boolean> sanki onları neredeysekullanabilirsiniz unutmayın. Yani, put ve getboolean s (ilkel) yapabileceksiniz. Bunun neden işlediğini açıklamak için otomatik kutuya bakın. Otomatik kutu kullanmanın bazı tuzakları var ama basit durumlarda işe yaramalı.

İlgili konular