2015-04-16 37 views
7

ile uyumlu olmayan denetime ihtiyacı vardır. Hazırda bekletme uygulamasını başlatmak istediğimde her zaman bir güvenlik uyarısı alıyorum. @SuppressWarnings("unchecked") kullanmadan kurtulmak için bir yöntem var mı? Tam Sen döküm zorlayabilir List<Object[]>Tip güvenliği: List List ifadesinin, List <Object[]>

+0

Hayır, yok. –

cevap

11

hazırda bekletme en Session.list() döner düz, List çiğ.

Bu, parametreli bir koleksiyona (List<Object[]> burada) yayınlamak için mükemmel bir yasal Java sözdizimidir. Ancak, genel tür kodlarının çalışma zamanında silinmesi nedeniyle, derleyici, bu dökümün gerçekte geçerli olacağını garanti edemeyeceğini bildiren bir uyarı verecektir. Bu yüzden sadece "Hey, burada ateşle oynuyorsun, umarım ne yaptığını biliyorsundur, çünkü ben de".

Bu özel durumda, bu uyarıyı ortadan kaldırmak için hiçbir şey yapamazsınız, ancak @SuppressWarnings ek açıklamasını kullanarak bunu açık bir şekilde göz ardı etme sorumluluğunu alabilirsiniz.

0

Hayır, siz (q.list yapmak sürece çıkarmak için hiçbir yolu yoktur): Burada

benim Kod olduğu uzakta, ancak bu uyarıyı bastırmak gibi bir problemi gizleyebilir çünkü q.list() bu tür bir geri dönüşü garanti etmiyor.

List<Object[]> list = (List<Object[]>)q.list(); 
0

bir uyarı gitmesi için

Configuration config = new Configuration(); 
     config.addAnnotatedClass(Employee.class); 
     config.configure("hibernate.cfg.xml"); 

     new SchemaExport(config).create(false, false); 

     ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() 
       .applySettings(config.getProperties()).build(); 
     SessionFactory factory = config.buildSessionFactory(serviceRegistry); 

     Session session = factory.getCurrentSession(); 

     session.beginTransaction(); 

     Query q = session 
       .createQuery("SELECT e.empId,e.empName FROM Employee e"); 

     @SuppressWarnings("unchecked") 
     List<Object[]> list = q.list(); <-- here is the problem! 
+0

Bunu denedim ve yayınlama uyarısını kaldırmadı. İşaretlenmemiş yayınlama uyarısını yeni değiştirdi. –