我的理解是接口(interface)不能直接实例化,除非你定义一个实现该接口(interface)的匿名内部类。但令我惊讶和困惑的是,我看到一些代码似乎实例化了一个接口(interface)。 这是代码:
public final class SqlProviders
{
private static boolean installed_;
private static ThreadLocal<SqlAggregateProvider> fortaskInfo_
= new ThreadLocal<TaskInfoProvider>();
}
public interface TaskInfoProvider
{
int getTaskIndex();
int getTaskCount();
long getSessionId();
long getStatementId();
long getFunctionInstanceId();
boolean isTaskInfoAvailable();
void setTaskInfoAvailable(boolean available);
}
谁能解释一下吗?
最佳答案
该代码未实例化 TaskInfoProvider
接口(interface)。它正在实例化通用类 ThreadLocal
...,并将接口(interface)作为类的通用类型参数。在此过程中没有创建 TaskInfoProvider
的(假设)实例....
显然,为了“设置本地线程的值”,您需要某个实现 TaskInfoProvider
接口(interface)的类的实例。但这不是此代码片段中发生的情况。
关于java - 在java中实例化接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24073285/