在Hibernate帮助文档中看到这个这个例子
SessionFactory sessionFactory = config.buildSessionFactory(); Session session = sessionFactory.openSession();
Session 和 SessionFactory 都是接口,为什么能声明一个Session类型的实例,并赋值呢?
请多多指点
SessionFactory sessionFactory = config.buildSessionFactory(); Session session = sessionFactory.openSession();
Session 和 SessionFactory 都是接口,为什么能声明一个Session类型的实例,并赋值呢?
请多多指点
List list = new ArrayList();
一样的道理。。
如:List list = new ArrayList();
List是接口,有两个类实现了它,ArrayList类和LinkedList类。List类型要大于它的了两个派生类型。
在 List list = new ArrayList(); 这句:
因为 List 是接口,所以 list 对象可以由 ArrayList 向上转型成它的接口 List,我们就直接对 List 接口进行编程。
接口只能作为类型,类才能实例化。
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
// 这是类库文档 http://www.hibernate.org/hib_docs/v3/api/SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.openSession(); 按照大家给出的解释,如果sessionFactory变量是一个被实例化后的SessionFactory类型的对象的话,就没什么问题了。
可是,SessionFactory 只是一个接口,而不是类,那为什么能够把config.buildSessionFactory()赋给SessionFactory类型的变量sessionFactory呢?sessionFactory被赋予的是哪个类的对象呢?我查了hibernate的api,只是说 Instantiate a new SessionFactory, using the properties and mappings in this configuration.并没有说是产生哪个类的对象。请大家帮忙,呵呵
public 类名 buildSessionFactory()
{
……
return (new 类名);
}
大概就是这样的,这样附值给sessionFactory就没有什么问题了。
接口就是为了实现多重继承,没必要去实例化
IWorkspaceFactory pWorkspaceFactory= new ShapefileWorkspaceFactory();
其中:IWorkspaceFactory,ShapefileWorkspaceFactory都是接口,作何解释?请求高手赐教。