2012-10-14 10 views
6

Bu derleyici hatası <identifier> expected ne anlama geldiğini bulmak için çok fazla şey yaptım ve bunların hiçbiri benim durumum için geçerli görünmüyor. Bu yinelenen veya temel bir bilgi ise gerçekten üzgünüm, ama hiçbir yerde bir şey bulamıyorum.Java derleyicisi herhangi bir anlam ifade etmiyor (<identifier> bekleniyor)

Aşağıdaki kod düzgün çalışıyor. Olumlu olduğumu unutmayın, myObject1 gerçekten HashSet<String> olup döküm tamam.

@SuppressWarnings("unchecked") 
HashSet<String> s1 = (HashSet<String>) myObject1; 

Aşağıdaki kod düzgün çalışmıyor. Derleme, ancak uyarılar ile. Bu yüzden aşağıdaki kodu deneyeceğim.

@SuppressWarnings("unchecked") 
HashSet<String> s1; 
@SuppressWarnings("unchecked") 
s1 = (HashSet<String>) myObject1; 

Şimdi bana beni çok şaşırtıcı olduğunu <identifier> expected hatayı veren, hatta derlemeye reddeder. Komut satırımdaki ^ sembolü, son satırdaki ='dan hemen önce işaret ediyor. Yeryüzünde ne s1 ve = ile BETWEEN koymak için beklenebilir emin değilim.

Herhangi bir fikrin var mı? Teşekkürler!

+0

Derleyici orada bir bildirim beklediğinden, 's 'bir tür adı olarak ayrıştırılır, daha sonra, bir sonraki adı' s1 'türünde bir varlık bekler. –

+1

Sorunun kapsamı dışında, 'HashSet ' yerine 'seçeneğini kullanmalısınız. Gelişim aşamasında uygulama sınıfını biliyorsanız bile, arayüzler üzerinde düşünmelisiniz. Birisi daha sonra kodu "TreeSet" e taşımaya karar verirse, takım * tüm bu dosyaları "HashSet" e sahip olmalı ve "TreeSet" e taşımalıdır? –

+0

Teşekkürler Luiggi, biliyorum bana aynı şeyi farklı bir soruda söyledin ve hala aynı hatayı burada yapıyordum ... hatırlattığın için teşekkürler. :-) – The111

cevap

11

Basit bir atama ifadesine bir ek açıklama uygulayamazsınız.

Açıklamalar bir bildiriminde değiştiricileri olarak kullanılabilir

olsun ambalaj (§7.4.1), sınıf (§8.1.1) (enums dahil (§8.9)), arayüz (§9.1.1: section 9.7 of the JLS kaynaktan (ek açıklama türleri (§9.6)), alan (§8.3.1, §9.3), yöntem (§8.4.3, §9.4), biçimsel parametre (§8.4.1), kurucu (§8.8.3) dahil, veya yerel değişken (§14.4.1).

Ben

+0

Teşekkürler Jon. OP'imi gerçekten yapmaya çalıştığım şeyi yansıtmak için biraz düzenledim. Eğer bir satırda s1 'i ilan etmek ama daha sonra atamak istersem ... atamada aldığım uyarıyı bastırmanın herhangi bir yolu var mı? Tabii ki, tüm yöntem için bir ek açıklama koymak dışında tabii ki, özensiz görünüyor. – The111

+3

geçici bir değişken kullanın ve geçici değişkeni s1'e atayın, geçici değişken ise doğru türe sahipse – daniel

İlgili konular