【发布时间】:2019-02-19 16:15:47
【问题描述】:
我对 java 引用类型的创建有一个疑问。
假设我下面有一节课
public class DefaultRepositorySelector
implements RepositorySelector
{
final LoggerRepository repository;
public DefaultRepositorySelector(LoggerRepository repository)
{
this.repository = repository;
}
public LoggerRepository getLoggerRepository()
{
return this.repository;
}
}
并且在另一个类的某处调用类的构造函数DefaultRepositorySelector,如下所示。
repositorySelector = new DefaultRepositorySelector(new NOPLoggerRepository());
如您所见,正在初始化一个类new DefaultRepositorySelector(new NOPLoggerRepository()),构造函数接受NOPLoggerRepository 实例,该实例具有LoggerRepository 接口的实现。
我的疑问是,我们在构造函数中直接将new NOPLoggerRepository() 作为参数传递,这是一个实例而不是引用类型,但构造函数持有引用类型LoggerRepository。
我无法理解这里的流程,因为根据流程,当我们创建一个实例时,我们传递新对象而不是对该对象的引用,但在类的定义中,构造函数接受该对象的引用类型。
所以在运行时,当我们直接传递一个实例但方法或构造函数接受该实例的引用类型时,它是如何处理的?谁创建了 OR Instance 的第一个引用类型?我认为引用类型,但不确定它是如何在幕后工作的......!
我的问题听起来很傻,但请帮助理解这一点..!
谢谢
【问题讨论】:
标签: java