这导致未经检查的警告:
public List<Person> list()
{
return sessionFactory.getCurrentSession().createQuery( "FROM Person" ).list();
}
已经尝试过但没有成功:
public List<Person> list()
{
Query query = sessionFactory.getCurrentSession().createQuery( "FROM Person" );
return Collections.checkedList( query.list(), Person.class );
}
我不想添加
@SuppressWarnings( "unchecked" )
因为它无法修复它......
那么,如何确保类型安全?
答案 0 :(得分:2)
在某个地方,必须发生从无类型列表到打字列表的转换。此转化为unsafe
。 Collections.checkedList
允许您移动注释但不能更多;这里不是很有帮助。注释不是从技术意义上“解决”问题,它只是告诉编译器你知道你做了什么。由于Query
接口不返回类型化结果(有充分理由),因此无法使用警告或SuppressWarnings注释。
您应该设置注释并写一个有意义的注释,为什么它是合理的(即因为类型由HQL查询确定,但接口返回一个无类型列表)。