由于在hibernate 3中不推荐使用buildSessionFactory方法,因此我们必须通过ServiceRegistry创建Session Factory。我创建了它,如下所示,
Configuration configuration = new Configuration().configure();
Map<String, String> map = new HashMap<String, String>((Map)configuration
.getProperties());
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(map)
.buildServiceRegistry();
但它向我显示了pmd错误,如下所示,
Multiple markers at this line
- Type safety: The expression of type Map needs unchecked conversion to conform to Map<? extends String,? extends
String>
- Map is a raw type. References to generic type Map<K,V> should be parameterized
我应该如何避免它?这是因为(Map)configuration.getProperties()中的强制转换对吗?
为什么我不能在那里使用泛型,
(Map<String,String>)configuration.getProperties()
以上是正确初始化Service Registry的正确方法,因为applySettings()方法将Map作为参数?
答案 0 :(得分:0)
你可以使用
(Map<String,String>)configuration.getProperties()
但它会生成警告,因为在执行强制转换时(在运行时),无法检查返回的Map是否具有String作为类型参数,因为该信息不再可用。实际上,在编译之后,演员阵容变为
(Map)configuration.getProperties()
虽然地图在实践中可能只包含字符串,但你不应该依赖它,而应该只使用Map<?,?>